diff --git a/src/tools/ecode/plugins/formatter/formatterplugin.cpp b/src/tools/ecode/plugins/formatter/formatterplugin.cpp index 3fd4fa5a4..cd8ef8646 100644 --- a/src/tools/ecode/plugins/formatter/formatterplugin.cpp +++ b/src/tools/ecode/plugins/formatter/formatterplugin.cpp @@ -192,10 +192,12 @@ void FormatterPlugin::runFormatter( UICodeEditor* editor, const Formatter& forma data += buffer.substr( 0, bytesRead ); } while ( bytesRead != 0 && subprocess_alive( &subprocess ) && !mShuttingDown ); - if ( subprocess_alive( &subprocess ) && !mShuttingDown ) - subprocess_join( &subprocess, &returnCode ); - else - returnCode = subprocess.return_status; + if ( mShuttingDown ) { + subprocess_terminate( &subprocess ); + return; + } + + subprocess_join( &subprocess, &returnCode ); subprocess_destroy( &subprocess ); // Log::info( "Formatter result:\n%s", data.c_str() ); diff --git a/src/tools/ecode/plugins/linter/linterplugin.cpp b/src/tools/ecode/plugins/linter/linterplugin.cpp index 098708e19..4eb745afe 100644 --- a/src/tools/ecode/plugins/linter/linterplugin.cpp +++ b/src/tools/ecode/plugins/linter/linterplugin.cpp @@ -271,10 +271,12 @@ void LinterPlugin::runLinter( std::shared_ptr doc, const Linter& l data += buffer.substr( 0, bytesRead ); } while ( bytesRead != 0 && subprocess_alive( &subprocess ) && !mShuttingDown ); - if ( subprocess_alive( &subprocess ) && !mShuttingDown ) - subprocess_join( &subprocess, &returnCode ); - else - returnCode = subprocess.return_status; + if ( mShuttingDown ) { + subprocess_terminate( &subprocess ); + return; + } + + subprocess_join( &subprocess, &returnCode ); subprocess_destroy( &subprocess ); if ( linter.hasNoErrorsExitCode && linter.noErrorsExitCode == returnCode ) {