Module: wine Branch: master Commit: 8a33dd43f60c1ad97f9d5fe47d5e303b1c5f329c URL: http://source.winehq.org/git/wine.git/?a=commit;h=8a33dd43f60c1ad97f9d5fe47d...
Author: Sebastian Lackner sebastian@fds-team.de Date: Fri Oct 23 04:16:08 2015 +0200
ntdll: Do not check if object was signaled after user APC in server_select.
Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/tests/sync.c | 4 ---- dlls/ntdll/server.c | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index 173793c..1065d5e 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -2317,20 +2317,16 @@ static DWORD WINAPI alertable_wait_thread(void *param)
ReleaseSemaphore(semaphores[0], 1, NULL); result = WaitForMultipleObjectsEx(1, &semaphores[1], TRUE, 1000, TRUE); - todo_wine ok(result == WAIT_IO_COMPLETION, "expected WAIT_IO_COMPLETION, got %u\n", result); result = WaitForMultipleObjectsEx(1, &semaphores[1], TRUE, 200, TRUE); - todo_wine ok(result == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", result);
ReleaseSemaphore(semaphores[0], 1, NULL); timeout.QuadPart = -10000000; status = pNtWaitForMultipleObjects(1, &semaphores[1], FALSE, TRUE, &timeout); - todo_wine ok(status == STATUS_USER_APC, "expected STATUS_USER_APC, got %08x\n", status); timeout.QuadPart = -2000000; status = pNtWaitForMultipleObjects(1, &semaphores[1], FALSE, TRUE, &timeout); - todo_wine ok(status == STATUS_WAIT_0, "expected STATUS_WAIT_0, got %08x\n", status);
ReleaseSemaphore(semaphores[0], 1, NULL); diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index 95111ad..f6457db 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -614,10 +614,11 @@ unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT if (ret != STATUS_USER_APC) break; if (invoke_apc( &call, &result )) { - /* if we ran a user apc we have to check once more if an object got signaled, + /* if we ran a user apc we have to check once more if additional apcs are queued, * but we don't want to wait */ abs_timeout = 0; user_apc = TRUE; + size = 0; }
/* don't signal multiple times */