diff --git a/src/plugins/locator/locatorwidget.cpp b/src/plugins/locator/locatorwidget.cpp
index cc7dd54f3cfbb6c0ebb10d13b5850f6c0ecff1be..8f29bbba7a19b94c1645c5ce6a6a13eae3924325 100644
--- a/src/plugins/locator/locatorwidget.cpp
+++ b/src/plugins/locator/locatorwidget.cpp
@@ -452,9 +452,12 @@ void LocatorWidget::updateCompletionList(const QString &text)
     QString searchText;
     const QList<ILocatorFilter*> filters = filtersFor(text, searchText);
 
-    QFuture<FilterEntry> future = QtConcurrent::run(filter_helper, filters, searchText);
+    // cancel the old future
     m_entriesWatcher->future().cancel();
+
+    QFuture<FilterEntry> future = QtConcurrent::run(filter_helper, filters, searchText);
     m_entriesWatcher->setFuture(future);
+    future.waitForFinished();
 }
 
 void LocatorWidget::updateEntries()