mark stop event handle as invalid once closed, making shutdowns more graceful.
authorsof@galois.com <unknown>
Mon, 16 Oct 2006 22:35:16 +0000 (22:35 +0000)
committersof@galois.com <unknown>
Mon, 16 Oct 2006 22:35:16 +0000 (22:35 +0000)
rts/win32/Ticker.c

index 9fa40eb..7701a3b 100644 (file)
@@ -54,6 +54,7 @@ TimerProc(PVOID param)
       /* event has become signalled */
       tickProc = NULL;
       CloseHandle(hStopEvent);
+      hStopEvent = INVALID_HANDLE_VALUE;
       return 0;
     case WAIT_TIMEOUT:
       /* tick */
@@ -115,7 +116,10 @@ stopTicker(void)
            }
            if (exitCode != STILL_ACTIVE) {
                tickThread = INVALID_HANDLE_VALUE;
-               CloseHandle(hStopEvent);
+               if ( hStopEvent != INVALID_HANDLE_VALUE ) {
+                   CloseHandle(hStopEvent);
+                   hStopEvent = INVALID_HANDLE_VALUE;
+               }
                return 0;
            }
            TerminateThread(tickThread, 0);