diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2011-09-15 12:16:30 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-09-15 12:19:12 +0200 |
commit | ee5a52da6133e9a43160e47505ba04a5fbf73d9b (patch) | |
tree | 85966029ea1624f18bc775c0cef39972e1175c63 | |
parent | 3b48ac334471acf90988d4aa5e2535b589c404b3 (diff) | |
download | qt-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.c | 7 |
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; } |