X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/604898dc4a7ca4814df2c0c0876f6a67044e939e..b7d74e9ca32b2ffd17bd0f98fde97361b6d5ec0f:/src/common/anidecod.cpp diff --git a/src/common/anidecod.cpp b/src/common/anidecod.cpp index 8ff3071623..d0d0b6d75b 100644 --- a/src/common/anidecod.cpp +++ b/src/common/anidecod.cpp @@ -113,10 +113,10 @@ wxColour wxANIDecoder::GetTransparentColour(unsigned int frame) const // ANI reading and decoding //--------------------------------------------------------------------------- -bool wxANIDecoder::CanRead(wxInputStream& stream) const +bool wxANIDecoder::DoCanRead(wxInputStream& stream) const { wxInt32 FCC1, FCC2; - wxUint32 datalen ; + wxUint32 datalen; wxInt32 riff32; memcpy( &riff32, "RIFF", 4 ); @@ -127,8 +127,11 @@ bool wxANIDecoder::CanRead(wxInputStream& stream) const wxInt32 anih32; memcpy( &anih32, "anih", 4 ); - if ( stream.SeekI(0) == wxInvalidOffset ) + if ( stream.IsSeekable() && stream.SeekI(0) == wxInvalidOffset ) + { return false; + } + if ( !stream.Read(&FCC1, 4) ) return false; @@ -222,8 +225,11 @@ bool wxANIDecoder::Load( wxInputStream& stream ) wxInt32 seq32; memcpy( &seq32, "seq ", 4 ); - if ( stream.SeekI(0) == wxInvalidOffset) + if ( stream.IsSeekable() && stream.SeekI(0) == wxInvalidOffset ) + { return false; + } + if ( !stream.Read(&FCC1, 4) ) return false; if ( FCC1 != riff32 )