forked from Mirrors/wine-wine
Always initialize msg16 and wparam16 in WINPROC_MapMsg32WTo16.
parent
32fcfc24ae
commit
4cecd4ae7d
|
@ -260,7 +260,7 @@ static WINDOWPROC *WINPROC_GetPtr( WNDPROC16 handle )
|
||||||
|
|
||||||
/* Check for a linear pointer */
|
/* Check for a linear pointer */
|
||||||
|
|
||||||
if (HEAP_IsInsideHeap( WinProcHeap, 0, (LPVOID)handle ))
|
if (HeapValidate( WinProcHeap, 0, (LPVOID)handle ))
|
||||||
{
|
{
|
||||||
ptr = (BYTE *)handle;
|
ptr = (BYTE *)handle;
|
||||||
/* First check if it is the jmp address */
|
/* First check if it is the jmp address */
|
||||||
|
@ -278,7 +278,7 @@ static WINDOWPROC *WINPROC_GetPtr( WNDPROC16 handle )
|
||||||
if (!IsBadReadPtr16((SEGPTR)handle,sizeof(WINDOWPROC)-sizeof(proc->thunk)))
|
if (!IsBadReadPtr16((SEGPTR)handle,sizeof(WINDOWPROC)-sizeof(proc->thunk)))
|
||||||
{
|
{
|
||||||
ptr = (BYTE *)PTR_SEG_TO_LIN(handle);
|
ptr = (BYTE *)PTR_SEG_TO_LIN(handle);
|
||||||
if (!HEAP_IsInsideHeap( WinProcHeap, 0, ptr )) return NULL;
|
if (!HeapValidate( WinProcHeap, 0, ptr )) return NULL;
|
||||||
/* It must be the thunk address */
|
/* It must be the thunk address */
|
||||||
if (*ptr == 0x58 /* popl eax */) ptr -= (int)&((WINDOWPROC *)0)->thunk;
|
if (*ptr == 0x58 /* popl eax */) ptr -= (int)&((WINDOWPROC *)0)->thunk;
|
||||||
/* Now we have a pointer to the WINDOWPROC struct */
|
/* Now we have a pointer to the WINDOWPROC struct */
|
||||||
|
@ -2181,6 +2181,8 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
UINT16 *pmsg16, WPARAM16 *pwparam16,
|
UINT16 *pmsg16, WPARAM16 *pwparam16,
|
||||||
LPARAM *plparam )
|
LPARAM *plparam )
|
||||||
{
|
{
|
||||||
|
*pmsg16 = LOWORD(msg32);
|
||||||
|
*pwparam16 = LOWORD(wParam32);
|
||||||
switch(msg32)
|
switch(msg32)
|
||||||
{
|
{
|
||||||
case LB_ADDSTRING:
|
case LB_ADDSTRING:
|
||||||
|
@ -2193,10 +2195,9 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
{
|
{
|
||||||
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
||||||
if (!str) return -1;
|
if (!str) return -1;
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(str);
|
*plparam = (LPARAM)SEGPTR_GET(str);
|
||||||
}
|
}
|
||||||
*pmsg16 = (UINT16)msg32 + (LB_ADDSTRING16 - LB_ADDSTRING);
|
*pmsg16 = (UINT16)msg32 + (LB_ADDSTRING16 - LB_ADDSTRING);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case CB_ADDSTRING:
|
case CB_ADDSTRING:
|
||||||
|
@ -2208,10 +2209,9 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
{
|
{
|
||||||
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
||||||
if (!str) return -1;
|
if (!str) return -1;
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(str);
|
*plparam = (LPARAM)SEGPTR_GET(str);
|
||||||
}
|
}
|
||||||
*pmsg16 = (UINT16)msg32 + (CB_ADDSTRING16 - CB_ADDSTRING);
|
*pmsg16 = (UINT16)msg32 + (CB_ADDSTRING16 - CB_ADDSTRING);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case WM_NCCREATE:
|
case WM_NCCREATE:
|
||||||
|
@ -2227,8 +2227,6 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
cls = SEGPTR_STRDUP_WtoA( cs32->lpszClass );
|
cls = SEGPTR_STRDUP_WtoA( cs32->lpszClass );
|
||||||
cs->lpszName = SEGPTR_GET(name);
|
cs->lpszName = SEGPTR_GET(name);
|
||||||
cs->lpszClass = SEGPTR_GET(cls);
|
cs->lpszClass = SEGPTR_GET(cls);
|
||||||
*pmsg16 = (UINT16)msg32;
|
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(cs);
|
*plparam = (LPARAM)SEGPTR_GET(cs);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2244,8 +2242,6 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
cls = SEGPTR_STRDUP_WtoA( cs32->szClass );
|
cls = SEGPTR_STRDUP_WtoA( cs32->szClass );
|
||||||
cs->szTitle = SEGPTR_GET(name);
|
cs->szTitle = SEGPTR_GET(name);
|
||||||
cs->szClass = SEGPTR_GET(cls);
|
cs->szClass = SEGPTR_GET(cls);
|
||||||
*pmsg16 = (UINT16)msg32;
|
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(cs);
|
*plparam = (LPARAM)SEGPTR_GET(cs);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2253,8 +2249,6 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
{
|
{
|
||||||
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
LPSTR str = SEGPTR_STRDUP_WtoA( (LPWSTR)*plparam );
|
||||||
if (!str) return -1;
|
if (!str) return -1;
|
||||||
*pmsg16 = (UINT16)msg32;
|
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(str);
|
*plparam = (LPARAM)SEGPTR_GET(str);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2265,7 +2259,6 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32,
|
||||||
LPSTR str = (LPSTR) SEGPTR_ALLOC( 256 ); /* fixme: fixed sized buffer */
|
LPSTR str = (LPSTR) SEGPTR_ALLOC( 256 ); /* fixme: fixed sized buffer */
|
||||||
if (!str) return -1;
|
if (!str) return -1;
|
||||||
*pmsg16 = (msg32 == LB_GETTEXT)? LB_GETTEXT16 : CB_GETLBTEXT16;
|
*pmsg16 = (msg32 == LB_GETTEXT)? LB_GETTEXT16 : CB_GETLBTEXT16;
|
||||||
*pwparam16 = (WPARAM16)LOWORD(wParam32);
|
|
||||||
*plparam = (LPARAM)SEGPTR_GET(str);
|
*plparam = (LPARAM)SEGPTR_GET(str);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue