=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: ntdll: Do not execute callbacks past DeleteTimer(INVALID_HANDLE_VALUE).

Alexandre Julliard julliard at winehq.org
Wed Oct 31 17:17:21 CDT 2012


Module: wine
Branch: master
Commit: 602807c2a5afca3feba11b5f4d56f1c38cb48665
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=602807c2a5afca3feba11b5f4d56f1c38cb48665

Author: Jörg Höhle <hoehle at 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);
     }
 




More information about the wine-cvs mailing list