diff --git a/src/plugins/cmakeprojectmanager/cmakeprocess.cpp b/src/plugins/cmakeprojectmanager/cmakeprocess.cpp index ae39d5f9182..45c820974a4 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprocess.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprocess.cpp @@ -57,10 +57,8 @@ CMakeProcess::CMakeProcess() CMakeProcess::~CMakeProcess() { - if (m_process) { - m_process->disconnect(); + if (m_process) Core::Reaper::reap(m_process.release()); - } m_parser.flush(); diff --git a/src/plugins/coreplugin/reaper.cpp b/src/plugins/coreplugin/reaper.cpp index fa8408abb17..c10c460e62c 100644 --- a/src/plugins/coreplugin/reaper.cpp +++ b/src/plugins/coreplugin/reaper.cpp @@ -157,6 +157,10 @@ void reap(QtcProcess *process, int timeoutMs) if (!process) return; + process->setStdOutCallback(nullptr); + process->setStdErrCallback(nullptr); + process->disconnect(); + QTC_ASSERT(Internal::d, return); new Internal::ProcessReaper(process, timeoutMs);