From e7237a967591e803a689410343e09b41c375f1d0 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 22 Sep 2022 10:42:06 +0200 Subject: [PATCH] LanguageClient: ensure that deleted clients are untracked in manager Change-Id: I0624ce9e6f8788af7193ebdf87b72497bab0ba39 Reviewed-by: Christian Stenger --- src/plugins/languageclient/languageclientmanager.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 4edd8c03f77..fd1aea4e5e2 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -96,6 +96,14 @@ void LanguageClient::LanguageClientManager::addClient(Client *client) [client](const DynamicCapabilities &capabilities) { managerInstance->m_inspector.updateCapabilities(client->name(), capabilities); }); + connect(client, + &Client::destroyed, + managerInstance, [client]() { + QTC_ASSERT(!managerInstance->m_clients.contains(client), + managerInstance->m_clients.removeAll(client)); + for (QList &clients : managerInstance->m_clientsForSetting) + QTC_CHECK(clients.removeAll(client) == 0); + }); emit managerInstance->clientAdded(client); }