changeset 1938:a8e475eede4a

Fix two memory leaks in the PNG writer/reader of libgfx.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 29 Jun 2018 00:27:34 +0300
parents a137e49e9f0d
children bc00373e5a90
files tools/libgfx.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/tools/libgfx.c	Fri Jun 29 00:26:13 2018 +0300
+++ b/tools/libgfx.c	Fri Jun 29 00:27:34 2018 +0300
@@ -562,6 +562,7 @@
         }
 
         png_set_PLTE(png_ptr, info_ptr, palette, img->ncolors);
+        png_free(png_ptr, palette);
     }
 
 //    png_set_gAMA(png_ptr, info_ptr, 2.2);
@@ -695,7 +696,9 @@
         img->aspect = (float) res_y / (float) res_x;
 
     // ...
-    row_pointers = png_malloc(png_ptr, height * sizeof(png_bytep));
+    if ((row_pointers = png_malloc(png_ptr, height * sizeof(png_bytep))) == NULL)
+        goto error;
+
     for (i = 0; i < img->height; i++)
         row_pointers[i] = img->data + (i * img->pitch);
 
@@ -759,7 +762,8 @@
     }
 
 error:
-//    png_free(png_ptr, palette);
+    if (png_ptr != NULL && row_pointers != NULL)
+        png_free(png_ptr, row_pointers);
 
     if (png_ptr && info_ptr)
         png_destroy_read_struct(&png_ptr, &info_ptr, NULL);