X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fwin32%2FAsyncIO.c;h=3f99113b7fd8411851a630e9a5885c13e2923943;hb=8edc7cea056b3de64508d700c1ace9965589a26e;hp=2ff92d96424ce97321f6d7e3a289236ab130f247;hpb=aba81b16e17d8dbd3081d20e062dbc8f9e2f783b;p=ghc-hetmet.git diff --git a/rts/win32/AsyncIO.c b/rts/win32/AsyncIO.c index 2ff92d9..3f99113 100644 --- a/rts/win32/AsyncIO.c +++ b/rts/win32/AsyncIO.c @@ -45,8 +45,8 @@ typedef struct CompletedReq { #define MAX_REQUESTS 200 static CRITICAL_SECTION queue_lock; -static HANDLE completed_req_event; -static HANDLE abandon_req_wait; +static HANDLE completed_req_event = INVALID_HANDLE_VALUE; +static HANDLE abandon_req_wait = INVALID_HANDLE_VALUE; static HANDLE wait_handles[2]; static CompletedReq completedTable[MAX_REQUESTS]; static int completed_hw; @@ -173,7 +173,18 @@ startupAsyncIO() void shutdownAsyncIO() { - CloseHandle(completed_req_event); + if (completed_req_event != INVALID_HANDLE_VALUE) { + CloseHandle(completed_req_event); + completed_req_event = INVALID_HANDLE_VALUE; + } + if (abandon_req_wait != INVALID_HANDLE_VALUE) { + CloseHandle(abandon_req_wait); + abandon_req_wait = INVALID_HANDLE_VALUE; + } + if (completed_table_sema != NULL) { + CloseHandle(completed_table_sema); + completed_table_sema = NULL; + } ShutdownIOManager(); }