]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/pnghand.cpp
fix when bitmap is not valid
[wxWidgets.git] / src / mac / pnghand.cpp
index 1ebf612f17bd978188e9f4811e1780bc4f1d7bdb..3d2690803c0779d77e550a6cf9d8e0a3e31fc2bc 100644 (file)
@@ -111,12 +111,11 @@ wxPNGReader::Create(int width, int height, int depth, int colortype)
   Width = width; Height = height; Depth = depth;
   ColorType = (colortype>=0) ? colortype: ((Depth>8) ? COLORTYPE_COLOR: 0);
   delete m_palette;
   Width = width; Height = height; Depth = depth;
   ColorType = (colortype>=0) ? colortype: ((Depth>8) ? COLORTYPE_COLOR: 0);
   delete m_palette;
-  delete[] RawImage ;
-  RawImage = 0;
-  m_palette = 0;
+  m_palette = NULL;
+  delete[] RawImage;
+  RawImage = NULL;
 
 
-  if (lpbi)  
-  {
+  if (lpbi) {
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
   }
   lpbi = wxMacCreateGWorld( Width , Height , Depth);
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
   }
   lpbi = wxMacCreateGWorld( Width , Height , Depth);
@@ -134,11 +133,18 @@ wxPNGReader::Create(int width, int height, int depth, int colortype)
 
 wxPNGReader::~wxPNGReader ( )
 {
 
 wxPNGReader::~wxPNGReader ( )
 {
-       delete[] RawImage ;
-  if (lpbi)  {
+    if (RawImage != NULL) {
+        delete[] RawImage ;
+        RawImage = NULL;
+    }
+    if (lpbi)  {
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
-  }
-  delete m_palette;
+        lpbi = NULL;
+    }
+    if (m_palette != NULL) {
+        delete m_palette;
+        m_palette = NULL;
+    }
 }
 
 
 }
 
 
@@ -260,10 +266,12 @@ void wxPNGReader::NullData()
 {
   if (lpbi)  {
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
 {
   if (lpbi)  {
        wxMacDestroyGWorld( (GWorldPtr) lpbi ) ;
+        lpbi = NULL;
+  }
+  if (m_palette != NULL) {
+      delete m_palette;
+      m_palette = NULL;
   }
   }
-  delete m_palette;
-  lpbi = NULL;
-  m_palette = NULL;
 }
 
 wxBitmap* wxPNGReader::GetBitmap(void)
 }
 
 wxBitmap* wxPNGReader::GetBitmap(void)
@@ -432,7 +440,7 @@ bool wxPNGReader::ReadFile(char * ImageFileName)
   if (!info_ptr)
   {
     fclose(fp);
   if (!info_ptr)
   {
     fclose(fp);
-    delete(png_ptr);
+    delete png_ptr;
     return FALSE;
   }
   /* set error handling */
     return FALSE;
   }
   /* set error handling */
@@ -440,8 +448,8 @@ bool wxPNGReader::ReadFile(char * ImageFileName)
   {
     png_read_destroy(png_ptr, info_ptr, (png_info *)0);
     fclose(fp);
   {
     png_read_destroy(png_ptr, info_ptr, (png_info *)0);
     fclose(fp);
-    delete(png_ptr);
-    delete(info_ptr);
+    delete png_ptr;
+    delete info_ptr;
 
     /* If we get here, we had a problem reading the file */
     return FALSE;
 
     /* If we get here, we had a problem reading the file */
     return FALSE;
@@ -623,8 +631,8 @@ bool wxPNGReader::ReadFile(char * ImageFileName)
   png_read_destroy(png_ptr, info_ptr, (png_info *)0);
 
   /* free the structures */
   png_read_destroy(png_ptr, info_ptr, (png_info *)0);
 
   /* free the structures */
-  delete(png_ptr);
-  delete(info_ptr);
+  delete png_ptr;
+  delete info_ptr;
 
   /* close the file */
   fclose(fp);
 
   /* close the file */
   fclose(fp);
@@ -663,7 +671,7 @@ bool wxPNGReader::SaveFile(char * ImageFileName)
   if (!info_ptr)
   {
     fclose(fp);
   if (!info_ptr)
   {
     fclose(fp);
-    delete(png_ptr);
+    delete png_ptr;
     return FALSE;
   }
 
     return FALSE;
   }
 
@@ -672,8 +680,8 @@ bool wxPNGReader::SaveFile(char * ImageFileName)
   {
     png_write_destroy(png_ptr);
     fclose(fp);
   {
     png_write_destroy(png_ptr);
     fclose(fp);
-    delete(png_ptr);
-    delete(info_ptr);
+    delete png_ptr;
+    delete info_ptr;
 
     /* If we get here, we had a problem reading the file */
     return FALSE;
 
     /* If we get here, we had a problem reading the file */
     return FALSE;
@@ -770,8 +778,8 @@ bool wxPNGReader::SaveFile(char * ImageFileName)
     delete[] (info_ptr->palette);
 
   /* free the structures */
     delete[] (info_ptr->palette);
 
   /* free the structures */
-  delete(png_ptr);
-  delete(info_ptr);
+  delete png_ptr;
+  delete info_ptr;
 
   /* close the file */
   fclose(fp);
 
   /* close the file */
   fclose(fp);