summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2011-09-15 12:16:30 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-09-15 12:19:12 +0200
commitee5a52da6133e9a43160e47505ba04a5fbf73d9b (patch)
tree85966029ea1624f18bc775c0cef39972e1175c63
parent3b48ac334471acf90988d4aa5e2535b589c404b3 (diff)
downloadqt-creator-ee5a52da6133e9a43160e47505ba04a5fbf73d9b.tar.gz
Process Stub: Release file handle
Task-number: QTCREATORBUG-5382 Merge-request: 388 Reviewed-by: ossi Change-Id: Ie80fdbe2eadb55d3b5684ebc7a79162317d1a36b
-rw-r--r--src/libs/utils/process_stub_win.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libs/utils/process_stub_win.c b/src/libs/utils/process_stub_win.c
index f9cffbab7a..f309689b67 100644
--- a/src/libs/utils/process_stub_win.c
+++ b/src/libs/utils/process_stub_win.c
@@ -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;
}