]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagpng.cpp
more 2.0b9 updates
[wxWidgets.git] / src / common / imagpng.cpp
index e200c00b6d8ddd2a4c813e800f95a27f4e52fe0e..11655cf3522e9fbe85bbd9aeafe534b469f75e63 100644 (file)
@@ -7,9 +7,14 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+/*
+   We don't put pragma implement in this file because it is already present in
+   src/common/image.cpp
+
 #ifdef __GNUG__
 #pragma implementation "image.h"
 #endif
+*/
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
@@ -71,7 +76,7 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream )
     // VZ: as this function uses setjmp() the only fool proof error handling
     //     method is to use goto (setjmp is not really C++ dtors friendly...)
     
-    unsigned char **lines = (unsigned char **) NULL;
+    unsigned char **lines;
     unsigned int i;
     png_infop info_ptr = (png_infop) NULL;
     
@@ -82,17 +87,17 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream )
         (png_error_ptr) NULL,
         (png_error_ptr) NULL );
     if (!png_ptr)
-        goto error;
+        goto error_nolines;
     
     info_ptr = png_create_info_struct( png_ptr );
     if (!info_ptr)
-        goto error;
+        goto error_nolines;
     
     if (setjmp(png_ptr->jmpbuf))
-        goto error;
+        goto error_nolines;
     
     if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
-        goto error;
+        goto error_nolines;
     
     png_set_read_fn( png_ptr, &stream, _PNG_stream_reader);
     
@@ -114,11 +119,11 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream )
     image->Create( width, height );
     
     if (!image->Ok())
-        goto error;
+        goto error_nolines;
     
     lines = (unsigned char **)malloc( height * sizeof(unsigned char *) );
     if (lines == NULL)
-        goto error;
+        goto error_nolines;
     
     for (i = 0; i < height; i++)
     {
@@ -206,8 +211,10 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream )
     }
     
     return TRUE;
-    
-error:
+
+ error_nolines:
+    lines = NULL; // called from before it was set
+ error:
     wxLogError(_("Couldn't load a PNG image - probably file is corrupted."));
     
     if ( image->Ok() )