[gs-commits] ghostpdl branch, master, updated. jbig2dec-0.14-1799-ga6f7464

[email protected] (Julian Smith) Mon, 4 Nov 2019 14:36:41 +0000 (UTC)
Newsgroups gmane.comp.printing.ghostscript.cvs
Message-ID <[email protected]>
The ghostpdl branch, master has been updated
       via  a6f7464dddc689386668a38b92dfd03cc1b38a10 (commit)
      from  2793769ff107d8d22dadd30c6e68cd781b569550 (commit)

----------------------------------------------------------------------
commit a6f7464dddc689386668a38b92dfd03cc1b38a10
Author: Julian Smith <[email protected]>
Date:   Mon Nov 4 13:00:04 2019 +0000

    Bug 701827: fixed incorrect buffer expansion in lxm5700m_print_page().
    
    Fixes:
        ./sanbin/gs -dBATCH -dNOPAUSE -r425 -dFitPage -sOutputFile=tmp -sDEVICE=lxm5700m ../bug-701827.eps

diff --git a/devices/gdevlxm.c b/devices/gdevlxm.c
index f3135dc..ec350ee 100644
--- a/devices/gdevlxm.c
+++ b/devices/gdevlxm.c
@@ -245,13 +245,21 @@ quit_ignomiously: /* and a goto into an if statement is pretty ignomious! */
         outp = swipeBuf;
 
         /* macro, not fcn call.  Space penalty is modest, speed helps */
-#define buffer_store(x) if(outp-swipeBuf>=swipeBuf_size) {\
-            gs_free(pdev->memory, (char *)swipeBuf, swipeBuf_size, 1, "lxm_print_page(swipeBuf)");\
-            swipeBuf_size*=2;\
-            swipeBuf = (byte *)gs_malloc(pdev->memory, swipeBuf_size, 1, "lxm_print_page(swipeBuf)");\
-            if (swipeBuf == 0) goto quit_ignomiously;\
-            break;}\
-        else *outp++ = (x)
+#define buffer_store(x)\
+        {\
+            if (outp-swipeBuf>=swipeBuf_size) {\
+                size_t  outp_offset = outp - swipeBuf;\
+                size_t  swipeBuf_size_new = swipeBuf_size * 2;\
+                byte*   swipeBuf_new = gs_malloc(pdev->memory, swipeBuf_size_new, 1, "lxm_print_page(swipeBuf_new)");\
+                if (!swipeBuf_new) goto quit_ignomiously;\
+                memcpy(swipeBuf_new, swipeBuf, swipeBuf_size);\
+                gs_free(pdev->memory, swipeBuf, swipeBuf_size, 1, "lxm_print_page(swipeBuf)");\
+                swipeBuf_size = swipeBuf_size_new;\
+                swipeBuf = swipeBuf_new;\
+                outp = swipeBuf + outp_offset;\
+            }\
+            *outp++ = (x);\
+        }
 
             {/* work out the bytes to store for this swipe*/
 


Summary of changes:
 devices/gdevlxm.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)