http://bugs.winehq.org/show_bug.cgi?id=22815
--- Comment #17 from Anastasius Focht focht@gmx.net 2012-01-19 02:28:26 CST --- Hello Dmitry,
--- quote --- Under XP in compatibility mode and turned off theming the height of "TMyStatusbar" child window is 22 pixels, and the app works fine with Windows version set to win2000 (in win9x mode the app eats 100% cpu). --- quote ---
With that 22 pixel height:
100*(-)22*4 = 8800 -> resulting DIB allocation is 3*4K pages due to 4K page allocation granularity and aligned at 64K boundaries.
As you already said: it's most likely an app bug that is hidden in Windows due to slightly larger reported font height and resulting in minimum 22 pixels height of status bar. Accessing some DIB bytes beyond the non-rounded buffer size is possible due to page-sized allocation granularity.
I don't think there is something wrong with current Wine DIB allocation/size/alignment. You could write a test case, allocating a DIB with 100*(-20) 32bpp and try to access the third 4K page like the app does. It should crash the same way.
Lying about font height just to have the app calculate the 22 pixel height of status bar doesn't seem feasible.
I opt for WONTFIX (don't lie about font heights) or INVALID (app bug).
Regards