[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master 29f83d1dd 3/3: [base] 'close' callback may not use `s
From: |
Werner Lemberg |
Subject: |
[freetype2] master 29f83d1dd 3/3: [base] 'close' callback may not use `stream->memory`. |
Date: |
Tue, 17 Jan 2023 03:01:20 -0500 (EST) |
branch: master
commit 29f83d1dd5e5ad2aeb8408aac3257026ced6dbb3
Author: Ben Wagner <bungeman@chromium.org>
Commit: Werner Lemberg <wl@gnu.org>
[base] 'close' callback may not use `stream->memory`.
The documentation for `FT_StreamRec::memory` states that it 'shouldn't be
touched by stream implementations'. This is true even for internal
implementations of the 'close' callback, since it is not guaranteed that
`memory` will even be set when the 'close' callback occurs.
* src/base/ftobjs.c (new_memory_stream): stash current `memory` in
`stream->descriptor`.
(memory_stream_close): Use it.
---
src/base/ftobjs.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index cd20f374f..186a90806 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1672,7 +1672,7 @@
static void
memory_stream_close( FT_Stream stream )
{
- FT_Memory memory = stream->memory;
+ FT_Memory memory = (FT_Memory)stream->descriptor.pointer;
FT_FREE( stream->base );
@@ -1709,7 +1709,8 @@
FT_Stream_OpenMemory( stream, base, size );
- stream->close = close;
+ stream->descriptor.pointer = memory;
+ stream->close = close;
*astream = stream;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master 29f83d1dd 3/3: [base] 'close' callback may not use `stream->memory`.,
Werner Lemberg <=