Hello,
windres.exe forgets to write the version 0x0001 at the beginning
of the struct data and all fields of CToolBarData are showhow
shifted/bogs => width becomes 0 => app crash later with IDIV zero
division error
GNU windres (GNU Binutils) 2.21.1
win32 (32bit)
e.g. resource:
1200 TOOLBAR 21, 20
{
BUTTON 7003
...
BUTTON 7057
}
correct RC.exe compiled resource:
>>> win32api.LoadResource(hg, 241, 1200)
'\x01\x00\x15\x00\x14\x00\x1a\x00[\x1bX\x1bY\x1bZ\x1b\x00\x00b\x1bc\x1bd\x1b\x00\x00\\\x9c_\x1b`\x1b\x00\x00\x84\x1c\x00\x00D\x1f]\x1b^\x1b\x00\x00\x8a\x1b\x9e\x1b
\x1c\x00\x00\x8c\x1b\x93\x1b\x91\x1b'
windres compiled:
>>> win32api.LoadResource(hg, 241,1200)
'\x15\x00\x00\x00\x14\x00\x00\x00\x1a\x00\x00\x00[\x1b\x00\x00X\x1b\x00\x00Y\x1b\x00\x00Z\x1b\x00\x00\x00\x00\x00\x00b\x1b\x00\x00c\x1b\x00\x00d\x1b\x00\x00\x00\x00\x00\x00\\\x9c\x00\x00_\x1b....................'
(wrong length because wItemCount wrong too!)
=> windres.exe forgets to write the version 0x0001 at the
beginning of the struct data and all fields of CToolBarData are
showhow shifted/bogs => width becomes 0 => app crash later with
IDIV zero division error
Best
Robert
struct CToolBarData
{
WORD wVersion;
WORD wWidth;
WORD wHeight;
WORD wItemCount;
//WORD aItems[wItemCount]
WORD* items()
{ return (WORD*)(this+1); }
};
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils