mirror of
https://gitlab.freedesktop.org/freetype/freetype.git
synced 2026-05-23 22:38:13 +02:00
The `FT_Open_Face` documentation states > If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream` > is automatically closed before this function returns any error (including > `FT_Err_Invalid_Argument`). However, if the user provides a stream in `args.stream` with `FT_OPEN_STREAM` set and a `close` function, but then for some reason passes NULL for `aface` and a non-negative `face_index`, the error `Invalid_Argument` is returned but the `close` callback will not be called on the user-provided stream. This may cause resource leaks if the caller is depending on the `close` callback to free resources. The difficulty is that a user may fill out a `FT_StreamRec` and pass its address as `args.stream`, but the stream isn't really 'live' until `FT_Stream_New` is called on it (and `memory` is set). In particular, it cannot really be cleaned up properly in `ft_open_face_internal` until the stream pointer has been copied into the `stream` local variable. * src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided `args.stream.close` is called even with early errors. |
||
|---|---|---|
| .. | ||
| autofit | ||
| base | ||
| bdf | ||
| bzip2 | ||
| cache | ||
| cff | ||
| cid | ||
| dlg | ||
| gxvalid | ||
| gzip | ||
| lzw | ||
| otvalid | ||
| pcf | ||
| pfr | ||
| psaux | ||
| pshinter | ||
| psnames | ||
| raster | ||
| sdf | ||
| sfnt | ||
| smooth | ||
| svg | ||
| tools | ||
| truetype | ||
| type1 | ||
| type42 | ||
| winfonts | ||