Module: wine
Branch: master
Commit: 602807c2a5afca3feba11b5f4d56f1c38cb48665
URL:
http://source.winehq.org/git/wine.git/?a=commit;h=602807c2a5afca3feba11b5f4…
Author: Jörg Höhle <hoehle(a)users.sourceforge.net>
Date: Tue Mar 6 19:07:44 2012 +0100
ntdll: Do not execute callbacks past DeleteTimer(INVALID_HANDLE_VALUE).
---
dlls/ntdll/threadpool.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/threadpool.c b/dlls/ntdll/threadpool.c
index bd6e06b..81abac3 100644
--- a/dlls/ntdll/threadpool.c
+++ b/dlls/ntdll/threadpool.c
@@ -1015,7 +1015,11 @@ NTSTATUS WINAPI RtlDeleteTimer(HANDLE TimerQueue, HANDLE Timer,
return STATUS_INVALID_PARAMETER_1;
q = t->q;
if (CompletionEvent == INVALID_HANDLE_VALUE)
+ {
status = NtCreateEvent(&event, EVENT_ALL_ACCESS, NULL, SynchronizationEvent,
FALSE);
+ if (status == STATUS_SUCCESS)
+ status = STATUS_PENDING;
+ }
else if (CompletionEvent)
event = CompletionEvent;
@@ -1029,7 +1033,10 @@ NTSTATUS WINAPI RtlDeleteTimer(HANDLE TimerQueue, HANDLE Timer,
if (CompletionEvent == INVALID_HANDLE_VALUE && event)
{
if (status == STATUS_PENDING)
+ {
NtWaitForSingleObject(event, FALSE, NULL);
+ status = STATUS_SUCCESS;
+ }
NtClose(event);
}