diff src/libgfx.c @ 858:e7019bd83cca

Fix potential longjmp clobbering of variable.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 21 Nov 2014 17:37:25 +0200
parents 9623b9b548d4
children c6c480e8e1c8
line wrap: on
line diff
--- a/src/libgfx.c	Fri Nov 21 17:36:15 2014 +0200
+++ b/src/libgfx.c	Fri Nov 21 17:37:25 2014 +0200
@@ -369,7 +369,6 @@
 {
     png_structp png_ptr = NULL;
     png_infop info_ptr = NULL;
-    png_colorp palette = NULL;
     int fmt, res = DMERR_OK;
 
     // Create PNG structures
@@ -431,8 +430,8 @@
     if (spec->format == DM_IFMT_PALETTE)
     {
         int i;
+        png_colorp palette = png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH * sizeof(png_color));
 
-        palette = png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH * sizeof(png_color));
         if (palette == NULL)
         {
             dmError("PNG: Could not allocate palette structure.");
@@ -464,8 +463,8 @@
     png_write_end(png_ptr, NULL);
 
 error:
-    png_free(png_ptr, palette);
-    palette = NULL;
+    if (info_ptr->palette)
+        png_free(png_ptr, info_ptr->palette);
 
     if (png_ptr && info_ptr)
         png_destroy_write_struct(&png_ptr, &info_ptr);