Jacek Caban : user32: Always use original parameter values in dispatch_send_message.
Alexandre Julliard
julliard at winehq.org
Mon Aug 15 15:23:45 CDT 2022
Module: wine
Branch: master
Commit: b4a5556da983c7ebc8a25b228100c08947024c59
URL: https://gitlab.winehq.org/wine/wine/-/commit/b4a5556da983c7ebc8a25b228100c08947024c59
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Aug 5 17:26:37 2022 +0200
user32: Always use original parameter values in dispatch_send_message.
---
dlls/user32/message.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index f6431e0c28a..7be93d94e39 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -588,7 +588,7 @@ LRESULT WINAPI SendMessageTimeoutA( HWND hwnd, UINT msg, WPARAM wparam, LPARAM l
}
-static LRESULT dispatch_send_message( struct win_proc_params *params )
+static LRESULT dispatch_send_message( struct win_proc_params *params, WPARAM wparam, LPARAM lparam )
{
struct ntuser_thread_info *thread_info = NtUserGetThreadInfo();
INPUT_MESSAGE_SOURCE prev_source = thread_info->msg_source;
@@ -596,6 +596,10 @@ static LRESULT dispatch_send_message( struct win_proc_params *params )
static const INPUT_MESSAGE_SOURCE msg_source_unavailable = { IMDT_UNAVAILABLE, IMO_UNAVAILABLE };
+ /* params may contain arguments modified by wow, use original parameters instead */
+ params->wparam = wparam;
+ params->lparam = lparam;
+
thread_info->recursion_count++;
params->result = &retval;
@@ -621,7 +625,7 @@ LRESULT WINAPI SendMessageW( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )
params.hwnd = 0;
retval = NtUserMessageCall( hwnd, msg, wparam, lparam, ¶ms, NtUserSendMessage, FALSE );
- if (params.hwnd) retval = dispatch_send_message( ¶ms );
+ if (params.hwnd) retval = dispatch_send_message( ¶ms, wparam, lparam );
return retval;
}
@@ -643,7 +647,7 @@ LRESULT WINAPI SendMessageA( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )
params.hwnd = 0;
retval = NtUserMessageCall( hwnd, msg, wparam, lparam, ¶ms, NtUserSendMessage, TRUE );
- if (params.hwnd) retval = dispatch_send_message( ¶ms );
+ if (params.hwnd) retval = dispatch_send_message( ¶ms, wparam, lparam );
return retval;
}
More information about the wine-cvs
mailing list