X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/942285dcfa083d114cf519d15099ce204b9895e8..f47db8f0676be7807693de8bc38c4851c37f56a2:/src/common/xpmdecod.cpp diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index a0d99a11db..c4ad123d5c 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -114,6 +114,10 @@ license is as follows: #include "wx/intl.h" #include +#ifdef __VISUALC__ +#include +#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;