At http://msdn.microsoft.com/en-us/library ... 71%29.aspx one
can read:
"If the timeOutInterval parameter is not zero (0) and the executeOnlyOnce
parameter is false, the timer is reset every time the event is signaled
or the time-out interval elapses."
timeOutInterval == 0 makes the above false and the timer should NOT
be reset, fix that.
Signed-off-by: Joakim Tjernlund <[email protected]>
---
Forget the earlier patches, this feels like the right fix.
dlls/ntdll/threadpool.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/threadpool.c b/dlls/ntdll/threadpool.c
index 44afb01..f6c9fb4 100644
--- a/dlls/ntdll/threadpool.c
+++ b/dlls/ntdll/threadpool.c
@@ -377,7 +377,8 @@ static DWORD CALLBACK wait_thread_proc(LPVOID Arg)
wait_work_item->Callback( wait_work_item->Context, TimerOrWaitFired );
wait_work_item->CallbackInProgress = FALSE;
- if (wait_work_item->Flags & WT_EXECUTEONLYONCE)
+ if (!wait_work_item->Milliseconds ||
+ wait_work_item->Flags & WT_EXECUTEONLYONCE)
break;
}
else
--
1.6.4.4