diff --git a/src/tools/ecode/projectbuild.cpp b/src/tools/ecode/projectbuild.cpp index ababd3250..322e03a37 100644 --- a/src/tools/ecode/projectbuild.cpp +++ b/src/tools/ecode/projectbuild.cpp @@ -935,6 +935,7 @@ void ProjectBuildManager::runApp( const ProjectBuildCommand& cmd, const ProjectB const ProjectBuildCommandsRes& res, const ProjectBuildProgressFn& progressFn, const ProjectBuildDoneFn& doneFn ) { + BoolScopedOp op( mRunning, true ); Clock clock; auto printElapsed = [&clock, &i18n, &progressFn]() { @@ -975,7 +976,7 @@ void ProjectBuildManager::runApp( const ProjectBuildCommand& cmd, const ProjectB cmd.workingDir ) ) { std::string buffer( 4096, '\0' ); unsigned bytesRead = 0; - int returnCode; + int returnCode = 0; do { bytesRead = mProcess->readStdOut( buffer ); std::string data( buffer.substr( 0, bytesRead ) ); @@ -984,7 +985,8 @@ void ProjectBuildManager::runApp( const ProjectBuildCommand& cmd, const ProjectB } while ( bytesRead != 0 && mProcess->isAlive() && !mShuttingDown && !mCancelRun ); if ( mShuttingDown || mCancelRun ) { - mProcess->kill(); + if ( mProcess ) + mProcess->kill(); mCancelRun = false; printElapsed(); if ( doneFn ) @@ -992,8 +994,10 @@ void ProjectBuildManager::runApp( const ProjectBuildCommand& cmd, const ProjectB return; } - mProcess->join( &returnCode ); - mProcess->destroy(); + if ( mProcess ) { + mProcess->join( &returnCode ); + mProcess->destroy(); + } if ( returnCode != EXIT_SUCCESS ) { if ( progressFn ) { diff --git a/src/tools/ecode/statusappoutputcontroller.cpp b/src/tools/ecode/statusappoutputcontroller.cpp index ff30c8c2c..22aa977b4 100644 --- a/src/tools/ecode/statusappoutputcontroller.cpp +++ b/src/tools/ecode/statusappoutputcontroller.cpp @@ -83,8 +83,10 @@ void StatusAppOutputController::run( const ProjectBuildCommand& runData, const auto updateRunButton = [this]() { UIPushButton* buildButton = getRunButton( mApp ); - buildButton->runOnMainThread( - [this, buildButton] { buildButton->setText( mApp->i18n( "run", "Run" ) ); } ); + if ( buildButton ) { + buildButton->runOnMainThread( + [this, buildButton] { buildButton->setText( mApp->i18n( "run", "Run" ) ); } ); + } mRunButton->setEnabled( true ); mStopButton->setEnabled( false ); };