]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagpng.cpp
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / src / common / imagpng.cpp
index 578d0baf6dd37b01c5f4ddaaa2e4515fe69581a2..5a27ca92f74ddf9a1d86329fca8e218182c4d009 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        src/common/imagpng.cpp
 // Purpose:     wxImage PNG handler
 // Author:      Robert Roebling
-// RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -116,11 +115,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler)
 //     First, let me describe what's the problem: libpng uses jmp_buf in
 //     its png_struct structure. Unfortunately, this structure is
 //     compiler-specific and may vary in size, so if you use libpng compiled
-//     as DLL with another compiler than the main executable, it may not work
-//     (this is for example the case with wxMGL port and SciTech MGL library
-//     that provides custom runtime-loadable libpng implementation with jmpbuf
-//     disabled altogether). Luckily, it is still possible to use setjmp() &
-//     longjmp() as long as the structure is not part of png_struct.
+//     as DLL with another compiler than the main executable, it may not work.
+//     Luckily, it is still possible to use setjmp() & longjmp() as long as the
+//     structure is not part of png_struct.
 //
 //     Sadly, there's no clean way to attach user-defined data to png_struct.
 //     There is only one customizable place, png_struct.io_ptr, which is meant
@@ -162,7 +159,7 @@ static void PNGLINKAGEMODE wx_PNG_stream_writer( png_structp png_ptr, png_bytep
 }
 
 static void
-PNGLINKAGEMODE wx_png_warning(png_structp png_ptr, png_const_charp message)
+PNGLINKAGEMODE wx_PNG_warning(png_structp png_ptr, png_const_charp message)
 {
     wxPNGInfoStruct *info = png_ptr ? WX_PNG_INFO(png_ptr) : NULL;
     if ( !info || info->verbose )
@@ -174,9 +171,9 @@ PNGLINKAGEMODE wx_png_warning(png_structp png_ptr, png_const_charp message)
 // from pngerror.c
 // so that the libpng doesn't send anything on stderr
 static void
-PNGLINKAGEMODE wx_png_error(png_structp png_ptr, png_const_charp message)
+PNGLINKAGEMODE wx_PNG_error(png_structp png_ptr, png_const_charp message)
 {
-    wx_png_warning(NULL, message);
+    wx_PNG_warning(NULL, message);
 
     // we're not using libpng built-in jump buffer (see comment before
     // wxPNGInfoStruct above) so we have to return ourselves, otherwise libpng
@@ -523,8 +520,8 @@ wxPNGHandler::LoadFile(wxImage *image,
                           (
                             PNG_LIBPNG_VER_STRING,
                             NULL,
-                            wx_png_error,
-                            wx_png_warning
+                            wx_PNG_error,
+                            wx_PNG_warning
                           );
     if (!png_ptr)
         goto error;
@@ -569,7 +566,7 @@ wxPNGHandler::LoadFile(wxImage *image,
 
     for (i = 0; i < height; i++)
     {
-        if ((lines[i] = (unsigned char *)malloc( (size_t)(width * (sizeof(unsigned char) * 4)))) == NULL)
+        if ((lines[i] = (unsigned char *)malloc( (size_t)(width * 4))) == NULL)
             goto error;
     }
 
@@ -739,8 +736,8 @@ bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbos
                           (
                             PNG_LIBPNG_VER_STRING,
                             NULL,
-                            wx_png_error,
-                            wx_png_warning
+                            wx_PNG_error,
+                            wx_PNG_warning
                           );
     if (!png_ptr)
     {
@@ -795,15 +792,13 @@ bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbos
 #endif
     ;
 
-    png_color_8 mask;
+    png_color_8 mask = { 0, 0, 0, 0, 0 };
 
     if (bHasMask)
     {
         mask.red   = image->GetMaskRed();
         mask.green = image->GetMaskGreen();
         mask.blue  = image->GetMaskBlue();
-        mask.alpha = 0;
-        mask.gray  = 0;
     }
 
     PaletteMap palette;