git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16003
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
bool wxICOHandler::DoCanRead(wxInputStream& stream)
{
bool wxICOHandler::DoCanRead(wxInputStream& stream)
{
unsigned char hdr[4];
if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
return FALSE;
unsigned char hdr[4];
if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
return FALSE;
bool wxCURHandler::DoCanRead(wxInputStream& stream)
{
bool wxCURHandler::DoCanRead(wxInputStream& stream)
{
unsigned char hdr[4];
if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
return FALSE;
unsigned char hdr[4];
if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
return FALSE;
// we always have a data size
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
// we always have a data size
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
+ //data should be padded to make even number of bytes
+ if (datalen % 2 == 1) datalen ++ ;
//now either data or a FCC
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
//now either data or a FCC
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
wxInt32 *list32 = (wxInt32 *) listtxt;
wxInt32 *anih32 = (wxInt32 *) anihtxt;
wxInt32 *list32 = (wxInt32 *) listtxt;
wxInt32 *anih32 = (wxInt32 *) anihtxt;
if ( !stream.Read(&FCC1, 4) )
return FALSE;
if ( !stream.Read(&FCC1, 4) )
return FALSE;
// we always have a data size:
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
// we always have a data size:
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
+ //data should be padded to make even number of bytes
+ if (datalen % 2 == 1) datalen ++ ;
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
// we always have a data size:
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
// we always have a data size:
stream.Read(&datalen, 4);
datalen = wxINT32_SWAP_ON_BE(datalen) ;
+ //data should be padded to make even number of bytes
+ if (datalen % 2 == 1) datalen ++ ;
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{
// now either data or a FCC:
if ( (FCC1 == *riff32) || (FCC1 == *list32) )
{