[2/2] ntdll: Do not check if object was signaled after user APC in server_select.
Sebastian Lackner
sebastian at fds-team.de
Fri Oct 9 22:58:43 CDT 2015
Setting size to 0 is equivalent to SELECT_NONE as wait op.
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
The change is not completely harmless ... if it is preferred to test it in
Staging for some time first, thats also fine.
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 */
--
2.6.0
More information about the wine-patches
mailing list