Module: wine Branch: master Commit: 384c042feafeb82e08db895c16df3a3b4e7652dd URL: https://source.winehq.org/git/wine.git/?a=commit;h=384c042feafeb82e08db895c1...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Apr 30 12:03:21 2021 +0200
server: Don't return a handle for user apcs.
Reported by David Torok.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
server/thread.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/server/thread.c b/server/thread.c index 7b248f24a30..2f11d7d51c2 100644 --- a/server/thread.c +++ b/server/thread.c @@ -1639,21 +1639,13 @@ DECL_HANDLER(select)
select_on( &select_op, op_size, req->cookie, req->flags, req->timeout );
- while (get_error() == STATUS_USER_APC) + if (get_error() == STATUS_USER_APC) { apc = thread_dequeue_apc( current, 0 ); - if ((reply->apc_handle = alloc_handle( current->process, apc, SYNCHRONIZE, 0 ))) - { - reply->call = apc->call; - release_object( apc ); - break; - } - apc->executed = 1; - wake_up( &apc->obj, 0 ); + reply->call = apc->call; release_object( apc ); } - - if (get_error() == STATUS_KERNEL_APC) + else if (get_error() == STATUS_KERNEL_APC) { apc = thread_dequeue_apc( current, 1 ); if ((reply->apc_handle = alloc_handle( current->process, apc, SYNCHRONIZE, 0 )))