diff options
author | Joerg Bornemann <joerg.bornemann@nokia.com> | 2011-11-07 12:36:52 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@nokia.com> | 2011-11-07 14:22:26 +0100 |
commit | a109f3011a91b027ed885e37691dedee94b8d3f7 (patch) | |
tree | ba8be20979b9142d63e11fd7e5fee90a24d9a7e3 /src/libs/utils/process_ctrlc_stub.cpp | |
parent | 6ac42268bf45e89f1968926a9b54eb1baad91382 (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.cpp | 12 |
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; } |