From 5550f66bce699411f27ba748a584697afa9d981a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 2 Jun 2009 13:50:30 +0000 Subject: [PATCH] don't free() the same pointer twice if an error occurs during lines pointers allocation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/imagpng.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/common/imagpng.cpp b/src/common/imagpng.cpp index 528168a609..33c53657d8 100644 --- a/src/common/imagpng.cpp +++ b/src/common/imagpng.cpp @@ -558,18 +558,16 @@ wxPNGHandler::LoadFile(wxImage *image, if (!image->Ok()) goto error; - lines = (unsigned char **)malloc( (size_t)(height * sizeof(unsigned char *)) ); + // initialize all line pointers to NULL to ensure that they can be safely + // free()d if an error occurs before all of them could be allocated + lines = (unsigned char **)calloc(height, sizeof(unsigned char *)); if ( !lines ) goto error; for (i = 0; i < height; i++) { if ((lines[i] = (unsigned char *)malloc( (size_t)(width * (sizeof(unsigned char) * 4)))) == NULL) - { - for ( unsigned int n = 0; n < i; n++ ) - free( lines[n] ); goto error; - } } png_read_image( png_ptr, lines );