Mercurial > hg > dmlib
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);