diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
index 16db4f4386977cb5f78b4a880c591a21466ce9ae..db29a62e8288dab35fd422bbe3abb7f7d5b40df3 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
@@ -223,9 +223,11 @@ void MaemoSshRunner::handleUnmounted()
         mount();
         break;
     case PostRunCleaning:
-    case StopRequested:
+    case StopRequested: {
         m_mounter->resetMountSpecifications();
-        if (m_state == StopRequested) {
+        const bool stopRequested = m_state == StopRequested;
+        setState(Inactive);
+        if (stopRequested) {
             emit remoteProcessFinished(InvalidExitCode);
         } else if (m_exitStatus == SshRemoteProcess::ExitedNormally) {
             emit remoteProcessFinished(m_runner->exitCode());
@@ -233,8 +235,8 @@ void MaemoSshRunner::handleUnmounted()
             emit error(tr("Error running remote process: %1")
                 .arg(m_runner->errorString()));
         }
-        setState(Inactive);
         break;
+    }
     default: ;
     }
 }
@@ -338,8 +340,8 @@ void MaemoSshRunner::setState(State newState)
 void MaemoSshRunner::emitError(const QString &errorMsg)
 {
     if (m_state != Inactive) {
-        emit error(errorMsg);
         setState(Inactive);
+        emit error(errorMsg);
     }
 }