From 0cb6f07829af8f38159fa5e7a298418f1434e1e1 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 16 Feb 2021 12:14:11 +0100 Subject: [PATCH] LanguageClient: Fix crash when language server dies Do not remove items of a container while iterating over it instead revert to old behavior of allocating a temporary. Broke with cf010911f76. Change-Id: Ie76974f1e74469f80ee28fb2011d66690dd9e917 Reviewed-by: David Schulz --- src/plugins/languageclient/client.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index e4905eb1069..296cb9b2ad5 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -880,8 +880,9 @@ bool Client::reset() m_diagnosticManager.clearDiagnostics(); for (auto it = m_openedDocument.cbegin(); it != m_openedDocument.cend(); ++it) it.key()->disconnect(this); - for (auto it = m_resetAssistProvider.cbegin(); it != m_resetAssistProvider.cend(); ++it) - resetAssistProviders(it.key()); + // temporary container needed since m_resetAssistProvider is changed in resetAssistProviders + for (TextEditor::TextDocument *document : m_resetAssistProvider.keys()) + resetAssistProviders(document); for (TextEditor::IAssistProcessor *processor : qAsConst(m_runningAssistProcessors)) processor->setAsyncProposalAvailable(nullptr); m_runningAssistProcessors.clear();