LanguageClient: prevent accessing deleted document

By always removing them from the list of opened documents also for
uninitialized clients. Fixes crash when closing creator before the
initialize response of a language server was handled.

Change-Id: I81fb15d8d9d7bf47300a6eac373ef9db04387bd4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-10-28 12:38:54 +01:00
parent 70ce398602
commit 6399188090

View File

@@ -459,7 +459,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc
void LanguageClientManager::documentClosed(Core::IDocument *document) void LanguageClientManager::documentClosed(Core::IDocument *document)
{ {
if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) { if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) {
for (Client *client : reachableClients()) for (Client *client : m_clients)
client->closeDocument(textDocument); client->closeDocument(textDocument);
m_clientForDocument.remove(textDocument); m_clientForDocument.remove(textDocument);
} }