Revert r235177 as the Handle is used to fail GetExitCodeProcess on purpose.
authorYaron Keren <yaron.keren@gmail.com>
Fri, 17 Apr 2015 12:11:15 +0000 (12:11 +0000)
committerYaron Keren <yaron.keren@gmail.com>
Fri, 17 Apr 2015 12:11:15 +0000 (12:11 +0000)
Avoid double closing of the handle by testing GetLastErr for
ERROR_INVALID_HANDLE and not calling CloseHandle(PI.ProcessHandle) then.

llvm-svn: 235184

llvm/lib/Support/Windows/Program.inc

index 3260234..75685de 100644 (file)
@@ -423,6 +423,7 @@ ProcessInfo sys::Wait(const ProcessInfo &PI, unsigned SecondsToWait,
         return WaitResult;
       }
       WaitForSingleObject(PI.ProcessHandle, INFINITE);
+      CloseHandle(PI.ProcessHandle);
     } else {
       // Non-blocking wait.
       return ProcessInfo();
@@ -433,7 +434,8 @@ ProcessInfo sys::Wait(const ProcessInfo &PI, unsigned SecondsToWait,
   DWORD status;
   BOOL rc = GetExitCodeProcess(PI.ProcessHandle, &status);
   DWORD err = GetLastError();
-  CloseHandle(PI.ProcessHandle);
+  if (err != ERROR_INVALID_HANDLE)
+    CloseHandle(PI.ProcessHandle);
 
   if (!rc) {
     SetLastError(err);