diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 5f6f296503f..a4652e8bafd 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -1089,10 +1089,12 @@ void CppModelManager::watchForCanceledProjectIndexer(const QFuture &future connect(watcher, &QFutureWatcher::canceled, this, [this, project, watcher]() { if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed d->m_projectToIndexerCanceled.insert(project, true); + watcher->disconnect(this); watcher->deleteLater(); }); connect(watcher, &QFutureWatcher::finished, this, [this, project, watcher]() { d->m_projectToIndexerCanceled.remove(project); + watcher->disconnect(this); watcher->deleteLater(); }); watcher->setFuture(future); diff --git a/src/plugins/cpptools/cppprojectupdater.cpp b/src/plugins/cpptools/cppprojectupdater.cpp index f0b0bda0902..567aabde5ee 100644 --- a/src/plugins/cpptools/cppprojectupdater.cpp +++ b/src/plugins/cpptools/cppprojectupdater.cpp @@ -53,7 +53,7 @@ CppProjectUpdater::~CppProjectUpdater() void CppProjectUpdater::update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo) { // Stop previous update. - cancelAndWaitForFinished(); + cancel(); m_projectUpdateInfo = projectUpdateInfo; @@ -93,7 +93,7 @@ void CppProjectUpdater::onToolChainRemoved(ProjectExplorer::ToolChain *t) { QTC_ASSERT(t, return); if (t == m_projectUpdateInfo.cToolChain || t == m_projectUpdateInfo.cxxToolChain) - cancelAndWaitForFinished(); + cancel(); } void CppProjectUpdater::onProjectInfoGenerated()