]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagiff.cpp
fix for C99-compatible vsnprintf()
[wxWidgets.git] / src / common / imagiff.cpp
index affbd43967ac48604f8c5baeacef30be75e06ebd..57229692690542755d82fe28ee14194fea950259 100644 (file)
@@ -12,7 +12,7 @@
 // by the author of xv, John Bradley for using the iff loading part
 // in wxWindows has been gratefully given.
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "imagiff.h"
 #endif
 
 #include "wx/log.h"
 #include "wx/intl.h"
 
+#if wxUSE_PALETTE
+    #include "wx/palette.h"
+#endif // wxUSE_PALETTE
+
 #include <stdlib.h>
 #include <string.h>
 
@@ -230,12 +234,14 @@ int wxIFFDecoder::GetTransparentColour() const { return m_image->transparent; }
 //
 bool wxIFFDecoder::CanRead()
 {
-    unsigned char buf[12] = "";
+    unsigned char buf[12];
 
-    m_f->Read(buf, 12);
-    m_f->SeekI(-12, wxFromCurrent);
+    if ( !m_f->Read(buf, WXSIZEOF(buf)) )
+        return FALSE;
+
+    m_f->SeekI(-(off_t)WXSIZEOF(buf), wxFromCurrent);
 
-    return (memcmp(buf, "FORM", 4) == 0 && memcmp(buf+8, "ILBM", 4) == 0);
+    return (memcmp(buf, "FORM", 4) == 0) && (memcmp(buf+8, "ILBM", 4) == 0);
 }
 
 
@@ -783,14 +789,9 @@ bool wxIFFHandler::SaveFile(wxImage * WXUNUSED(image),
 
 bool wxIFFHandler::DoCanRead(wxInputStream& stream)
 {
-    wxIFFDecoder *decod;
-    bool ok;
+    wxIFFDecoder decod(&stream);
 
-    decod = new wxIFFDecoder(&stream);
-    ok = decod->CanRead();
-    delete decod;
-
-    return ok;
+    return decod.CanRead();
 }
 
 #endif // wxUSE_STREAMS