[PATCH 7/7] server: Check for internal messages before validating window handle.
Rémi Bernon
rbernon at codeweavers.com
Fri Oct 15 04:48:02 CDT 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/user32/tests/win.c | 1 -
server/queue.c | 6 +++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index f128d15419d..b460416e89d 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -936,7 +936,6 @@ static void test_thread_exit_destroy(void)
ret = IsWindow( child2 );
ok( !ret, "IsWindow returned %u\n", ret );
ret = IsWindow( child3 );
- todo_wine
ok( !ret, "IsWindow returned %u\n", ret );
ret = DestroyWindow( child2 );
ok( !ret, "DestroyWindow returned %u\n", ret );
diff --git a/server/queue.c b/server/queue.c
index fbbb230e6dc..5ef23996317 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -2573,6 +2573,10 @@ DECL_HANDLER(get_message)
reply->active_hooks = get_active_hooks();
+ /* first check for internal messages */
+ if (queue && get_queued_message( queue, SEND_MESSAGE, 0, 0x80000000, 0xffffffff, PM_REMOVE, reply ))
+ return;
+
if (get_win && get_win != 1 && get_win != -1 && !get_user_object( get_win, USER_WINDOW ))
{
set_win32_error( ERROR_INVALID_WINDOW_HANDLE );
@@ -2584,7 +2588,7 @@ DECL_HANDLER(get_message)
if (!filter) filter = QS_ALLINPUT;
/* first check for sent messages */
- if (get_queued_message( queue, SEND_MESSAGE, 0, 0, 0xffffffff, PM_REMOVE, reply ))
+ if (get_queued_message( queue, SEND_MESSAGE, 0, 0, 0x7fffffff, PM_REMOVE, reply ))
return;
/* clear changed bits so we can wait on them if we don't find a message */
--
2.33.0
More information about the wine-devel
mailing list