diff --git a/src/plugins/cppcheck/cppcheckrunner.cpp b/src/plugins/cppcheck/cppcheckrunner.cpp index b1d5f1b6c69..c7472588386 100644 --- a/src/plugins/cppcheck/cppcheckrunner.cpp +++ b/src/plugins/cppcheck/cppcheckrunner.cpp @@ -87,17 +87,19 @@ void CppcheckRunner::addToQueue(const Utils::FileNameList &files, } if (m_isRunning) { - if (existing == m_currentFiles) - m_process->kill(); // Further processing in handleFinished + stop(existing); return; } m_queueTimer.start(); } -void CppcheckRunner::stop() +void CppcheckRunner::stop(const Utils::FileNameList &files) { - if (m_isRunning) + if (!m_isRunning) + return; + + if (files.isEmpty() || m_currentFiles == files) m_process->kill(); } diff --git a/src/plugins/cppcheck/cppcheckrunner.h b/src/plugins/cppcheck/cppcheckrunner.h index 760105c462c..733ef07d6d8 100644 --- a/src/plugins/cppcheck/cppcheckrunner.h +++ b/src/plugins/cppcheck/cppcheckrunner.h @@ -51,7 +51,7 @@ public: void addToQueue(const Utils::FileNameList &files, const QString &additionalArguments = {}); void removeFromQueue(const Utils::FileNameList &files); - void stop(); + void stop(const Utils::FileNameList &files = {}); const Utils::FileNameList ¤tFiles() const; QString currentCommand() const; diff --git a/src/plugins/cppcheck/cppchecktool.cpp b/src/plugins/cppcheck/cppchecktool.cpp index cbf53aad796..28111cd3f6e 100644 --- a/src/plugins/cppcheck/cppchecktool.cpp +++ b/src/plugins/cppcheck/cppchecktool.cpp @@ -229,7 +229,7 @@ void CppcheckTool::addToQueue(const Utils::FileNameList &files, CppTools::Projec void CppcheckTool::stop(const Utils::FileNameList &files) { m_runner->removeFromQueue(files); - m_runner->stop(); + m_runner->stop(files); } void CppcheckTool::startParsing()