CppTools: Fix memory leak of QFutureWatcher when canceled

Change-Id: Ia9cd428e3bed193167903b6ffa080e4886193789
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Hannes Domani
2017-12-22 16:56:00 +01:00
parent 3f356f31bc
commit 168e89e0a2

View File

@@ -956,9 +956,10 @@ void CppModelManager::watchForCanceledProjectIndexer(const QVector<QFuture<void>
continue;
QFutureWatcher<void> *watcher = new QFutureWatcher<void>();
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project]() {
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() {
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
d->m_projectToIndexerCanceled.insert(project, true);
watcher->deleteLater();
});
connect(watcher, &QFutureWatcher<void>::finished, this, [watcher]() {
watcher->deleteLater();