diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index 173793c339a..1065d5e7f90 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 95111adfbd8..f6457db3514 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 */