cvs: gd /libgd/src gd_png.c

[email protected] ("Takeshi Abe") Sat, 14 Mar 2009 04:16:49 -0000
Newsgroups php.gd.cvs
Message-ID <cvstabe1237004209@cvsserver>
tabe		Sat Mar 14 04:16:49 2009 UTC

  Modified files:              
    /gd/libgd/src	gd_png.c 
  Log:
  fixed a slim chance of memory leaks.
  
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd_png.c?r1=1.29&r2=1.30&diff_format=u
Index: gd/libgd/src/gd_png.c
diff -u gd/libgd/src/gd_png.c:1.29 gd/libgd/src/gd_png.c:1.30
--- gd/libgd/src/gd_png.c:1.29	Fri Mar 13 20:18:24 2009
+++ gd/libgd/src/gd_png.c	Sat Mar 14 04:16:49 2009
@@ -1,4 +1,4 @@
-/* $Id: gd_png.c,v 1.29 2009/03/13 20:18:24 tabe Exp $ */
+/* $Id: gd_png.c,v 1.30 2009/03/14 04:16:49 tabe Exp $ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -762,14 +762,13 @@
 		png_bytep *prow_pointers;
 		int saveAlphaFlag = im->saveAlphaFlag;
 		if (overflow2(sizeof (png_bytep), height)) {
-			return;
+			goto bail;
 		} 
 		row_pointers = gdMalloc (sizeof (png_bytep) * height);
 		if (row_pointers == NULL)
 		{
 			fprintf (stderr, "gd-png error: unable to allocate row_pointers\n");
-			/* 2.0.29: return was missing */
-			return;
+			goto bail;
 		}
 		prow_pointers = row_pointers;
 		for (j = 0; j < height; ++j)
@@ -782,7 +781,7 @@
 					gdFree (row_pointers[i]);
 				/* 2.0.29: memory leak TBB */
 				gdFree(row_pointers);
-				return;
+				goto bail;
 			}
 			pOutputRow = *prow_pointers++;
 			pThisRow = *ptpixels++;
@@ -820,15 +819,13 @@
 		{
 			png_bytep *row_pointers;
 			if (overflow2(sizeof (png_bytep), height)) {
-				return;
+				goto bail;
 			}
 			row_pointers = gdMalloc (sizeof (png_bytep) * height);
 			if (row_pointers == NULL)
 			{
-				fprintf (stderr,
-						"gd-png error: unable to allocate row_pointers\n");
-				/* TBB: return missing */
-				return;
+				fprintf (stderr, "gd-png error: unable to allocate row_pointers\n");
+				goto bail;
 			}
 			for (j = 0; j < height; ++j)
 			{
@@ -839,7 +836,7 @@
 						gdFree (row_pointers[i]);
 					/* TBB: memory leak */
 					gdFree (row_pointers);
-					return;
+					goto bail;
 				}
 				for (i = 0; i < width; ++i)
 					row_pointers[j][i] = mapping[im->pixels[j][i]];