cvs: gd(GD_2_0) /libgd/src gd_png.c

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

  Modified files:              (Branch: GD_2_0)
    /gd/libgd/src	gd_png.c 
  Log:
  MFH: fixed a slim chance of memory leaks.
  
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd_png.c?r1=1.21.2.5&r2=1.21.2.6&diff_format=u
Index: gd/libgd/src/gd_png.c
diff -u gd/libgd/src/gd_png.c:1.21.2.5 gd/libgd/src/gd_png.c:1.21.2.6
--- gd/libgd/src/gd_png.c:1.21.2.5	Fri Mar 13 20:26:55 2009
+++ gd/libgd/src/gd_png.c	Sat Mar 14 04:17:14 2009
@@ -1,4 +1,4 @@
-/* $Id: gd_png.c,v 1.21.2.5 2009/03/13 20:26:55 tabe Exp $ */
+/* $Id: gd_png.c,v 1.21.2.6 2009/03/14 04:17:14 tabe Exp $ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -743,14 +743,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)
@@ -763,7 +762,7 @@
 		gdFree (row_pointers[i]);
               /* 2.0.29: memory leak TBB */
               gdFree(row_pointers);
-	      return;
+              goto bail;
 	    }
 	  pOutputRow = *prow_pointers++;
 	  pThisRow = *ptpixels++;
@@ -801,15 +800,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)
 	    {
@@ -820,7 +817,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]];