{
unsigned char buf[3];
- m_f->Read(buf, 3);
- m_f->SeekI(-3, wxFromCurrent);
+ if ( !m_f->Read(buf, WXSIZEOF(buf)) )
+ return FALSE;
+
+ m_f->SeekI(-WXSIZEOF(buf), wxFromCurrent);
- return (memcmp(buf, "GIF", 3) == 0);
+ return memcmp(buf, "GIF", WXSIZEOF(buf)) == 0;
}
{
unsigned char hdr[2];
- stream.Read(hdr, 2);
- stream.SeekI(-2, wxFromCurrent);
- return (hdr[0] == 'B' && hdr[1] == 'M');
+ if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
+ return FALSE;
+
+ stream.SeekI(-WXSIZEOF(hdr), wxFromCurrent);
+
+ // do we have the BMP file signature?
+ return hdr[0] == 'B' && hdr[1] == 'M';
}
//now either data or a FCC
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
- stream.Read(&FCC2, 4);
+ stream.Read(&FCC2, 4);
}
else
{
return TRUE;
// we always have a data size:
stream.Read(&datalen, 4);
- datalen = wxINT32_SWAP_ON_BE(datalen) ;
+ datalen = wxINT32_SWAP_ON_BE(datalen) ;
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
- stream.Read(&FCC2, 4);
+ stream.Read(&FCC2, 4);
}
else
{
}
// try to read next data chunk:
- stream.Read(&FCC1, 4);
+ if ( !stream.Read(&FCC1, 4) )
+ {
+ // reading failed -- either EOF or IO error, bail out anyhow
+ return FALSE;
+ }
}
return FALSE;
datalen = wxINT32_SWAP_ON_BE(datalen) ;
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
- {
- stream.Read(&FCC2, 4);
+ {
+ stream.Read(&FCC2, 4);
}
else
{
bool wxImage::CanRead( wxInputStream &stream )
{
- wxList &list=GetHandlers();
+ const wxList& list = GetHandlers();
for ( wxList::Node *node = list.GetFirst(); node; node = node->GetNext() )
{
//
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(-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);
}
{
unsigned char hdr[2];
- stream.Read(hdr, 2);
- stream.SeekI(-2, wxFromCurrent);
- return (hdr[0] == 0xFF && hdr[1] == 0xD8);
+ if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
+ return FALSE;
+
+ stream.SeekI(-WXSIZEOF(hdr), wxFromCurrent);
+ return hdr[0] == 0xFF && hdr[1] == 0xD8;
}
#endif // wxUSE_STREAMS
bool wxPCXHandler::DoCanRead( wxInputStream& stream )
{
- unsigned char c;
+ unsigned char c = stream.GetC();
+ if ( !stream )
+ return FALSE;
- c = stream.GetC();
stream.SeekI(-1, wxFromCurrent);
// not very safe, but this is all we can get from PCX header :-(
- return (c == 10);
+ return c == 10;
}
#endif // wxUSE_STREAMS && wxUSE_PCX
{
unsigned char hdr[4];
- stream.Read(hdr, 4);
- stream.SeekI(-4, wxFromCurrent);
- return (hdr[0] == 0x89 && hdr[1] == 'P' && hdr[2] == 'N' && hdr[3] == 'G');
+ if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
+ return FALSE;
+
+ stream.SeekI(-WXSIZEOF(hdr), wxFromCurrent);
+
+ return memcmp(hdr, "\211PNG", WXSIZEOF(hdr)) == 0;
}
#endif // wxUSE_STREAMS
{
unsigned char hdr[2];
- stream.Read(&hdr, 2);
- stream.SeekI(-2, wxFromCurrent);
+ if ( !stream.Read(&hdr, WXSIZEOF(hdr)) )
+ return FALSE;
+
+ stream.SeekI(-WXSIZEOF(hdr), wxFromCurrent);
- return ((hdr[0] == 0x49 && hdr[1] == 0x49) ||
- (hdr[0] == 0x4D && hdr[1] == 0x4D));
+ return (hdr[0] == 'I' && hdr[1] == 'I') ||
+ (hdr[0] == 'M' && hdr[1] == 'M');
}
{
unsigned char buf[9];
- stream.Read(buf, 9);
- stream.SeekI(-9, wxFromCurrent);
+ if ( !stream.Read(buf, WXSIZEOF(buf)) )
+ return FALSE;
- return (memcmp(buf, "/* XPM */", 9) == 0);
+ stream.SeekI(-WXSIZEOF(buf), wxFromCurrent);
+
+ return memcmp(buf, "/* XPM */", WXSIZEOF(buf)) == 0;
}
wxImage wxXPMDecoder::ReadFile(wxInputStream& stream)