summaryrefslogtreecommitdiff
path: root/src/plugins/clangcodemodel/clangrefactoringengine.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-04-23 12:15:42 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-04-24 10:06:17 +0000
commitfeac99c9acb49c423ec2392df803f07a0f199b6f (patch)
treee1601f8b9f1e7b08d2210c1d10a80ec713958045 /src/plugins/clangcodemodel/clangrefactoringengine.cpp
parent28062f0c6871af887e996aa6e60bb1d07642b09c (diff)
downloadqt-creator-feac99c9acb49c423ec2392df803f07a0f199b6f.tar.gz
Clang: Fix possible future watcher issues in local renaming
Use the same code pattern as in asynchronous branch of CppUseSelectionsUpdater::update. Change-Id: I7c06b883a5abe1324cb63fa410247ef7f50321ae Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel/clangrefactoringengine.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangrefactoringengine.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/plugins/clangcodemodel/clangrefactoringengine.cpp b/src/plugins/clangcodemodel/clangrefactoringengine.cpp
index d639e27667..bb985a650e 100644
--- a/src/plugins/clangcodemodel/clangrefactoringengine.cpp
+++ b/src/plugins/clangcodemodel/clangrefactoringengine.cpp
@@ -51,10 +51,14 @@ void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data,
if (cursorFuture.isCanceled())
return defaultCallback();
- QObject::connect(&m_watcher, &FutureCursorWatcher::finished, [=]() {
- if (m_watcher.isCanceled())
+ if (m_watcher)
+ m_watcher->cancel();
+
+ m_watcher.reset(new FutureCursorWatcher());
+ QObject::connect(m_watcher.get(), &FutureCursorWatcher::finished, [=]() {
+ if (m_watcher->isCanceled())
return defaultCallback();
- const CppTools::CursorInfo info = m_watcher.result();
+ const CppTools::CursorInfo info = m_watcher->result();
if (info.useRanges.empty())
return defaultCallback();
@@ -72,7 +76,7 @@ void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data,
renameSymbolsCallback(symbolName, container, data.cursor().document()->revision());
});
- m_watcher.setFuture(cursorFuture);
+ m_watcher->setFuture(cursorFuture);
}
}