From be112d853a49d7d183819a22d6f776430b0b38e8 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 1 Aug 2013 15:43:10 +0200 Subject: [PATCH] ConsoleProcess: Show correct exit code Task-number: QTCREATORBUG-9740 Change-Id: I41721356b3612b6c98e774168f520ff49426271b Reviewed-by: Oswald Buddenhagen Reviewed-by: Daniel Teske --- src/libs/utils/consoleprocess.h | 2 +- src/libs/utils/consoleprocess_unix.cpp | 6 +++--- src/libs/utils/consoleprocess_win.cpp | 4 ++-- src/plugins/projectexplorer/applicationlauncher.cpp | 11 +++-------- src/plugins/projectexplorer/applicationlauncher.h | 1 - 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/libs/utils/consoleprocess.h b/src/libs/utils/consoleprocess.h index 3c0a5e7a917..2f604cb2886 100644 --- a/src/libs/utils/consoleprocess.h +++ b/src/libs/utils/consoleprocess.h @@ -99,7 +99,7 @@ signals: void processError(const QString &error); // These reflect the state of the actual client process void processStarted(); - void processStopped(); + void processStopped(int, QProcess::ExitStatus); // These reflect the state of the console+stub void stubStarted(); diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp index e8c85d5ead1..d5a40c5be37 100644 --- a/src/libs/utils/consoleprocess_unix.cpp +++ b/src/libs/utils/consoleprocess_unix.cpp @@ -295,12 +295,12 @@ void ConsoleProcess::readStubOutput() d->m_appStatus = QProcess::NormalExit; d->m_appCode = out.mid(5).toInt(); d->m_appPid = 0; - emit processStopped(); + emit processStopped(d->m_appCode, d->m_appStatus); } else if (out.startsWith("crash ")) { d->m_appStatus = QProcess::CrashExit; d->m_appCode = out.mid(6).toInt(); d->m_appPid = 0; - emit processStopped(); + emit processStopped(d->m_appCode, d->m_appStatus); } else { emit processError(msgUnexpectedOutput(out)); d->m_stubPid = 0; @@ -323,7 +323,7 @@ void ConsoleProcess::stubExited() d->m_appStatus = QProcess::CrashExit; d->m_appCode = -1; d->m_appPid = 0; - emit processStopped(); // Maybe it actually did not, but keep state consistent + emit processStopped(d->m_appCode, d->m_appStatus); // Maybe it actually did not, but keep state consistent } emit stubStopped(); } diff --git a/src/libs/utils/consoleprocess_win.cpp b/src/libs/utils/consoleprocess_win.cpp index 8ec72e8f5d9..1e8ba851333 100644 --- a/src/libs/utils/consoleprocess_win.cpp +++ b/src/libs/utils/consoleprocess_win.cpp @@ -261,7 +261,7 @@ void ConsoleProcess::inferiorExited() cleanupInferior(); d->m_appStatus = QProcess::NormalExit; d->m_appCode = chldStatus; - emit processStopped(); + emit processStopped(d->m_appCode, d->m_appStatus); } void ConsoleProcess::cleanupStub() @@ -288,7 +288,7 @@ void ConsoleProcess::stubExited() cleanupInferior(); d->m_appStatus = QProcess::CrashExit; d->m_appCode = -1; - emit processStopped(); + emit processStopped(d->m_appCode, d->m_appStatus); } emit stubStopped(); } diff --git a/src/plugins/projectexplorer/applicationlauncher.cpp b/src/plugins/projectexplorer/applicationlauncher.cpp index 3404b6c2268..c0c920d068a 100644 --- a/src/plugins/projectexplorer/applicationlauncher.cpp +++ b/src/plugins/projectexplorer/applicationlauncher.cpp @@ -113,8 +113,8 @@ ApplicationLauncher::ApplicationLauncher(QObject *parent) this, SIGNAL(processStarted())); connect(&d->m_consoleProcess, SIGNAL(processError(QString)), this, SLOT(consoleProcessError(QString))); - connect(&d->m_consoleProcess, SIGNAL(processStopped()), - this, SLOT(processStopped())); + connect(&d->m_consoleProcess, SIGNAL(processStopped(int,QProcess::ExitStatus)), + this, SLOT(processDone(int,QProcess::ExitStatus))); #ifdef Q_OS_WIN connect(WinDebugInterface::instance(), SIGNAL(cannotRetrieveDebugOutput()), @@ -181,7 +181,7 @@ void ApplicationLauncher::stop() } } else { d->m_consoleProcess.stop(); - processStopped(); + processDone(0, QProcess::CrashExit); } } @@ -270,11 +270,6 @@ void ApplicationLauncher::checkDebugOutput(qint64 pid, const QString &message) } #endif -void ApplicationLauncher::processStopped() -{ - emit processExited(0); -} - void ApplicationLauncher::processDone(int exitCode, QProcess::ExitStatus) { emit processExited(exitCode); diff --git a/src/plugins/projectexplorer/applicationlauncher.h b/src/plugins/projectexplorer/applicationlauncher.h index f3c3c176d55..4a8d8d7d01d 100644 --- a/src/plugins/projectexplorer/applicationlauncher.h +++ b/src/plugins/projectexplorer/applicationlauncher.h @@ -75,7 +75,6 @@ signals: void bringToForegroundRequested(qint64 pid); private slots: - void processStopped(); void guiProcessError(); void consoleProcessError(const QString &error); void readStandardOutput();