diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-04-23 12:15:42 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-04-24 10:06:17 +0000 |
commit | feac99c9acb49c423ec2392df803f07a0f199b6f (patch) | |
tree | e1601f8b9f1e7b08d2210c1d10a80ec713958045 /src/plugins/clangcodemodel/clangrefactoringengine.cpp | |
parent | 28062f0c6871af887e996aa6e60bb1d07642b09c (diff) | |
download | qt-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.cpp | 12 |
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); } } |