aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/process_ctrlc_stub.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@nokia.com>2011-11-07 12:36:52 +0100
committerJoerg Bornemann <joerg.bornemann@nokia.com>2011-11-07 14:22:26 +0100
commita109f3011a91b027ed885e37691dedee94b8d3f7 (patch)
treeba8be20979b9142d63e11fd7e5fee90a24d9a7e3 /src/libs/utils/process_ctrlc_stub.cpp
parent6ac42268bf45e89f1968926a9b54eb1baad91382 (diff)
process_ctrl_c_stub: forward exit code of the child process
If the child process cannot be started, return -1. Task-number: QTCREATORBUG-6458 Change-Id: I0392d883773f3037ac29dccc4d4a3c330efde838 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Diffstat (limited to 'src/libs/utils/process_ctrlc_stub.cpp')
-rw-r--r--src/libs/utils/process_ctrlc_stub.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/libs/utils/process_ctrlc_stub.cpp b/src/libs/utils/process_ctrlc_stub.cpp
index 5f3a8ab12c..0d05e4d0bd 100644
--- a/src/libs/utils/process_ctrlc_stub.cpp
+++ b/src/libs/utils/process_ctrlc_stub.cpp
@@ -102,16 +102,19 @@ int main(int argc, char **)
free(strCommandLine);
if (!bSuccess)
- return 1;
+ return -1;
MSG msg;
+ DWORD dwExitCode = -1;
while (GetMessage(&msg, NULL, 0, 0))
{
+ if (msg.message == WM_DESTROY)
+ dwExitCode = msg.wParam;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
- return (int) msg.wParam;
+ return (int)dwExitCode;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
@@ -148,7 +151,10 @@ DWORD WINAPI processWatcherThread(LPVOID lpParameter)
{
HANDLE hProcess = reinterpret_cast<HANDLE>(lpParameter);
WaitForSingleObject(hProcess, INFINITE);
- PostMessage(hwndMain, WM_DESTROY, 0, 0);
+ DWORD dwExitCode;
+ if (!GetExitCodeProcess(hProcess, &dwExitCode))
+ dwExitCode = -1;
+ PostMessage(hwndMain, WM_DESTROY, dwExitCode, 0);
return 0;
}