OSDN Git Service

Process Stub: Release file handle
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>
Thu, 15 Sep 2011 10:16:30 +0000 (12:16 +0200)
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Thu, 15 Sep 2011 10:19:12 +0000 (12:19 +0200)
Task-number: QTCREATORBUG-5382
Merge-request: 388
Reviewed-by: ossi
Change-Id: Ie80fdbe2eadb55d3b5684ebc7a79162317d1a36b

src/libs/utils/process_stub_win.c

index f9cffba..f309689 100644 (file)
@@ -118,6 +118,7 @@ int main()
     PROCESS_INFORMATION pi;
     DEBUG_EVENT dbev;
     enum RunMode mode = Run;
+    HANDLE image = NULL;
 
     argv = CommandLineToArgvW(GetCommandLine(), &argc);
 
@@ -196,6 +197,8 @@ int main()
         do {
             if (!WaitForDebugEvent (&dbev, INFINITE))
                 systemError("Cannot fetch debug event, error %d\n");
+            if (dbev.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT)
+                image = dbev.u.CreateProcessInfo.hFile;
             if (dbev.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) {
                 /* The first exception to be delivered is a trap
                    which indicates completion of startup. */
@@ -207,6 +210,8 @@ int main()
         } while (dbev.dwDebugEventCode != EXCEPTION_DEBUG_EVENT);
         if (!DebugActiveProcessStop(dbev.dwProcessId))
             systemError("Cannot detach from debugee, error %d\n");
+        if (image)
+            CloseHandle(image);
     }
 
     SetConsoleCtrlHandler(ctrlHandler, TRUE);
@@ -216,6 +221,8 @@ int main()
 
     if (WaitForSingleObject(pi.hProcess, INFINITE) == WAIT_FAILED)
         systemError("Wait for debugee failed, error %d\n");
+    CloseHandle(pi.hProcess);
+    CloseHandle(pi.hThread);
     doExit(0);
     return 0;
 }