From: Jacek Caban jacek@codeweavers.com
Instead of leaking a kernel pointer. --- dlls/user32/user_main.c | 4 +++- dlls/win32u/message.c | 6 +++++- dlls/win32u/window.c | 3 --- include/ntuser.h | 6 +++--- 4 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c index df3e6b27b81..bc817089e46 100644 --- a/dlls/user32/user_main.c +++ b/dlls/user32/user_main.c @@ -352,7 +352,9 @@ BOOL WINAPI ShutdownBlockReasonDestroy(HWND hwnd)
const char *SPY_GetMsgName( UINT msg, HWND hwnd ) { - return (const char *)NtUserCallHwndParam( hwnd, msg, NtUserSpyGetMsgName ); + char buf[128]; + NtUserMessageCall( hwnd, msg, ARRAYSIZE(buf), 0, buf, NtUserSpyGetMsgName, FALSE ); + return wine_dbg_sprintf( "%s", buf ); }
void SPY_EnterMessage( INT flag, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index 5fb065e1208..33170147aa9 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -2960,7 +2960,7 @@ LRESULT WINAPI NtUserMessageCall( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa return send_notify_message( hwnd, msg, wparam, lparam, ansi );
case NtUserSendMessageCallback: - return send_message_callback( hwnd, msg, wparam, lparam, (void *)result_info, ansi ); + return send_message_callback( hwnd, msg, wparam, lparam, result_info, ansi );
case NtUserClipboardWindowProc: return user_driver->pClipboardWindowProc( hwnd, msg, wparam, lparam ); @@ -2978,6 +2978,10 @@ LRESULT WINAPI NtUserMessageCall( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa spy_enter_message( ansi, hwnd, msg, wparam, lparam ); return 0;
+ case NtUserSpyGetMsgName: + lstrcpynA( result_info, debugstr_msg_name( msg, hwnd ), wparam ); + return 0; + case NtUserSpyExit: spy_exit_message( ansi, hwnd, msg, (LPARAM)result_info, wparam, lparam ); return 0; diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index c4e14381cf5..2a4edeee656 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -5578,9 +5578,6 @@ ULONG_PTR WINAPI NtUserCallHwndParam( HWND hwnd, DWORD_PTR param, DWORD code ) return set_window_style( hwnd, style->styleNew, style->styleOld ); }
- case NtUserSpyGetMsgName: - return (UINT_PTR)debugstr_msg_name( param, hwnd ); - default: FIXME( "invalid code %u\n", code ); return 0; diff --git a/include/ntuser.h b/include/ntuser.h index f15ba1f135e..5b7d66a2a4e 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -297,8 +297,9 @@ enum /* Wine-specific exports */ NtUserClipboardWindowProc = 0x0300, NtUserGetDispatchParams = 0x3001, - NtUserSpyEnter = 0x0302, - NtUserSpyExit = 0x0303, + NtUserSpyGetMsgName = 0x3002, + NtUserSpyEnter = 0x0303, + NtUserSpyExit = 0x0304, };
/* NtUserThunkedMenuItemInfo codes */ @@ -1261,7 +1262,6 @@ enum NtUserCallHwndParam_ShowOwnedPopups, /* temporary exports */ NtUserSetWindowStyle, - NtUserSpyGetMsgName, };
static inline BOOL NtUserClientToScreen( HWND hwnd, POINT *pt )