From 4ae802d9c19d1f021970215d992b6aebc4165ec8 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Tue, 24 Jul 2007 10:05:31 -0400 Subject: [PATCH] ENH: fix resource leak --- Source/kwsys/ProcessWin32.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/kwsys/ProcessWin32.c b/Source/kwsys/ProcessWin32.c index 6325a7b7af..2654a73ebd 100644 --- a/Source/kwsys/ProcessWin32.c +++ b/Source/kwsys/ProcessWin32.c @@ -1453,7 +1453,6 @@ int kwsysProcess_WaitForExit(kwsysProcess* cp, double* userTimeout) void kwsysProcess_Kill(kwsysProcess* cp) { int i; - /* Make sure we are executing a process. */ if(!cp || cp->State != kwsysProcess_State_Executing || cp->TimeoutExpired || cp->Killed) @@ -1485,7 +1484,10 @@ void kwsysProcess_Kill(kwsysProcess* cp) /* Not Windows 9x. Just terminate the children. */ for(i=0; i < cp->NumberOfCommands; ++i) { - kwsysProcessKillTree(cp->ProcessInformation[i].dwProcessId); + kwsysProcessKillTree(cp->ProcessInformation[i].dwProcessId); + // close the handle if we kill it + kwsysProcessCleanupHandle(&cp->ProcessInformation[i].hThread); + kwsysProcessCleanupHandle(&cp->ProcessInformation[i].hProcess); } } @@ -1851,7 +1853,6 @@ int kwsysProcessCreate(kwsysProcess* cp, int index, r = CreateProcess(0, realCommand, 0, 0, TRUE, cp->Win9x? 0 : CREATE_SUSPENDED, 0, 0, &si->StartupInfo, &cp->ProcessInformation[index]); - if(cp->Win9x) { /* Free memory. */ @@ -2114,7 +2115,6 @@ void kwsysProcessCleanupHandleSafe(PHANDLE h, DWORD nStdHandle) void kwsysProcessCleanup(kwsysProcess* cp, int error) { int i; - /* If this is an error case, report the error. */ if(error) { @@ -2861,6 +2861,7 @@ static void kwsysProcessKill(DWORD pid) { TerminateProcess(h, 255); WaitForSingleObject(h, INFINITE); + CloseHandle(h); } }