]> git.saurik.com Git - wxWidgets.git/commitdiff
no real changes, just some cleanup: use wxON_BLOCK_EXIT instead of littering the...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 3 Aug 2008 00:32:12 +0000 (00:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 3 Aug 2008 00:32:12 +0000 (00:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/imagbmp.cpp

index fc67b7731307c719f5972214b05f943708c4929b..4380d0b2d16107c0506e42c80a32c8586e83f7c2 100644 (file)
@@ -33,6 +33,7 @@
 #include "wx/filefn.h"
 #include "wx/wfstream.h"
 #include "wx/quantize.h"
+#include "wx/scopeguard.h"
 #include "wx/anidecod.h"
 
 // For memcpy
@@ -469,10 +470,12 @@ bool wxBMPHandler::SaveDib(wxImage *image,
 }
 
 
-typedef struct
+struct BMPPalette
 {
+    static void Free(BMPPalette* pal) { delete [] pal; }
+
     unsigned char r, g, b;
-}  _cmap;
+};
 
 bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
                              int bpp, int ncolors, int comp,
@@ -488,11 +491,11 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
     wxUint16        aWord;
 
     // allocate space for palette if needed:
-    _cmap *cmap;
+    BMPPalette *cmap;
 
     if ( bpp < 16 )
     {
-        cmap = new _cmap[ncolors];
+        cmap = new BMPPalette[ncolors];
         if ( !cmap )
         {
             if (verbose)
@@ -500,8 +503,12 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
             return false;
         }
     }
-    else
+    else // no palette
+    {
         cmap = NULL;
+    }
+
+    wxON_BLOCK_EXIT1(&BMPPalette::Free, cmap);
 
     // destroy existing here instead of:
     image->Destroy();
@@ -513,7 +520,6 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
     {
         if ( verbose )
             wxLogError( _("BMP: Couldn't allocate memory.") );
-        delete[] cmap;
         return false;
     }
 
@@ -527,7 +533,6 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
         {
             if ( verbose )
                 wxLogError(_("BMP: Couldn't allocate memory."));
-            delete[] cmap;
             return false;
         }
     }
@@ -879,8 +884,6 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height,
         }
     }
 
-    delete[] cmap;
-
     image->SetMask(false);
 
     const wxStreamError err = stream.GetLastError();