freetype-commit
[Top][All Lists]
Advanced

[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;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]