[Bug 1503] executing old 16-bit program leads to unhandled exception in scroll.c

Wine Bugs wine-bugs at winehq.com
Mon Jun 2 11:56:32 CDT 2003


http://bugs.winehq.com/show_bug.cgi?id=1503


andi at rhlx01.fht-esslingen.de changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1




------- Additional Comments From andi at rhlx01.fht-esslingen.de  2003-02-06 11:56 -------
Hmm, if I have a closer look at WINPROC_MapMsg32ATo16(),
I notice that SBM_GETRANGE doesn't receive any special handling.
However I think it should be handled specially, since both LPARAM and WPARAM
are supposed to be pointers to min and max values.
In Win16 Watcom, it is defined as:
void    WINAPI GetScrollRange(HWND, int, int FAR*, int FAR*);
In other words, *both* variables should be FAR pointers.
Ah, WAIT!! Watcom has:
./h/nt/winuser.h:#define SBM_GETRANGE                0x00E3 /*not in win3.1 */

Guess why this is not available in Win3.1??
Because WPARAM is only 16bit-sized in Win16 (this was the big mystery that I've
been trying to solve for 10 minutes now: how to fit a FAR pointer in a 16bit
variable?? Answer: you don't ;)
So it seems like Wine misbehaves here and does a Win16 call into our
ScrollBarWndProc() for some reason. It should prevent this from happening much
earlier, since using such Win16-crippled "pointers" CANNOT work, of course...


-- 
Configure bugmail: http://bugs.winehq.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list