]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagxpm.cpp
copyright update
[wxWidgets.git] / src / common / imagxpm.cpp
index 19ae615e707bdef45da73729263ef263e2d5992f..d46b11898a431bf3f502008e4f574d7675aa7631 100644 (file)
@@ -77,7 +77,7 @@ license is as follows:
 #  include "wx/defs.h"
 #endif
 
-#if wxUSE_IMAGE && wxUSE_XPM
+#if wxUSE_XPM
 
 #include "wx/imagxpm.h"
 #include "wx/wfstream.h"
@@ -96,7 +96,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxXPMHandler,wxImageHandler)
 
 bool wxXPMHandler::LoadFile(wxImage *image,
                             wxInputStream& stream,
-                            bool verbose, int WXUNUSED(index))
+                            bool WXUNUSED(verbose), int WXUNUSED(index))
 {
     wxXPMDecoder decoder;
 
@@ -129,7 +129,7 @@ bool wxXPMHandler::SaveFile(wxImage * image,
 
     // 2. write the header:
     char tmpbuf[200];
-    // VS: 200b is safe upper bound for anything produced by sprintf bellow
+    // VS: 200b is safe upper bound for anything produced by sprintf below
     //     (101 bytes the string, neither %i can expand into more than 10 chars)
     sprintf(tmpbuf, 
                "/* XPM */\n"
@@ -141,6 +141,7 @@ bool wxXPMHandler::SaveFile(wxImage * image,
 
     // 3. create color symbols table:
     wxHashTable table(wxKEY_INTEGER);
+    table.DeleteContents(TRUE);    
     image->ComputeHistogram(table);
 
     char *symbols_data = new char[cols * (chars_per_pixel+1)];
@@ -208,9 +209,17 @@ bool wxXPMHandler::SaveFile(wxImage * image,
     tmp = wxT("};\n");
     stream.Write(tmp.mb_str(), 3);
 
+    // Clean up:
     delete[] symbols;
     delete[] symbols_data;
 
+    // FIXME: it will be better to use macros-based wxHashTable & DeleteContents(TRUE)
+    table.BeginFind();
+    while ((node = table.Next()) != NULL)
+    {
+        delete (wxHNode *) node->GetData();
+    }
+
     return TRUE;
 }
 
@@ -222,4 +231,4 @@ bool wxXPMHandler::DoCanRead(wxInputStream& stream)
 
 #endif  // wxUSE_STREAMS
 
-#endif // wxUSE_XPM && wxUSE_IMAGE
+#endif // wxUSE_XPM