]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/xpmdecod.cpp
fix for wxComboBox::GetSelection from inside event handler
[wxWidgets.git] / src / common / xpmdecod.cpp
index a0d99a11db2db24a8d8661dba00c578af78de168..c4ad123d5ca3b55828626883fb6664c736bb97d1 100644 (file)
@@ -114,6 +114,10 @@ license is as follows:
 #include "wx/intl.h"
 #include <string.h>
 
+#ifdef __VISUALC__
+#include <ctype.h>
+#endif
+
 #include "wx/xpmdecod.h"
 
 #if wxUSE_STREAMS
@@ -132,12 +136,13 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream)
     size_t length = stream.GetSize();
     wxCHECK_MSG(length != 0, wxNullImage, wxT("Cannot read XPM from stream of unknown size"));
 
-    char *xpm_buffer = new char[length];
+    char *xpm_buffer = new char[length+1];
     char *p, *q;
     size_t i;
 
     if ( stream.Read(xpm_buffer, length).LastError() == wxSTREAM_READ_ERROR )
-        return FALSE;
+        return wxNullImage;
+    xpm_buffer[length] = '\0';
 
     /*
      *  Remove comments from the file:
@@ -203,6 +208,12 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream)
             lines_cnt++;
     }
 
+    if ( !lines_cnt )
+    {
+        // this doesn't really look an XPM image
+        return wxNullImage;
+    }
+
     xpm_lines = new const char*[lines_cnt];
     xpm_lines[0] = xpm_buffer;
     line = 1;