freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master f631542: [lzw] Preserve decompression stack when relo


From: Werner Lemberg
Subject: [freetype2] master f631542: [lzw] Preserve decompression stack when relocating to heap.
Date: Tue, 27 Apr 2021 11:41:17 -0400 (EDT)

branch: master
commit f631542dae1aaf9101135ed660cd3ff1d08ed93c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    [lzw] Preserve decompression stack when relocating to heap.
    
    * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Copy stack when
    relocating to heap.
---
 ChangeLog         | 7 +++++++
 src/lzw/ftzopen.c | 7 ++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index a1e66e0..5f61c1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2021-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
 
+       [lzw] Preserve decompression stack when relocating to heap.
+
+       * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Copy stack when
+       relocating to heap.
+
+2021-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
        * src/cid/cidgload.c (cid_load_glyph): Restore the glyph_length check.
 
 2021-04-27  Werner Lemberg  <wl@gnu.org>
diff --git a/src/lzw/ftzopen.c b/src/lzw/ftzopen.c
index 0c61af0..8b5b357 100644
--- a/src/lzw/ftzopen.c
+++ b/src/lzw/ftzopen.c
@@ -127,6 +127,7 @@
 
       new_size = new_size + ( new_size >> 1 ) + 4;
 
+      /* if relocating to heap */
       if ( state->stack == state->stack_0 )
       {
         state->stack = NULL;
@@ -142,9 +143,13 @@
           return -1;
       }
 
-      if ( FT_RENEW_ARRAY( state->stack, old_size, new_size ) )
+      if ( FT_QRENEW_ARRAY( state->stack, old_size, new_size ) )
         return -1;
 
+      /* if relocating to heap */
+      if ( old_size == 0 )
+        FT_MEM_COPY( state->stack, state->stack_0, FT_LZW_DEFAULT_STACK_SIZE );
+
       state->stack_size = new_size;
     }
     return 0;



reply via email to

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