From c20129a973f43864ecbef11ed1cd3c611e1505b1 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 21 Nov 2023 11:09:10 +0100 Subject: [PATCH] ClangCodeModel: Make VirtualFunctionAssistProcessor more safe Let's not access the object state after emitting ClangdFollowSymbol::done(), in case the receiver deletes us. Can happen in test code. Change-Id: Ia6c691c0f88b16476da1a6be1cedd106d9da2d53 Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdfollowsymbol.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp index 8be15c7327d..a975c787368 100644 --- a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp @@ -310,9 +310,10 @@ void ClangdFollowSymbol::VirtualFunctionAssistProcessor::resetData(bool resetFol if (!m_followSymbol) return; m_followSymbol->d->virtualFuncAssistProcessor = nullptr; - if (resetFollowSymbolData) - m_followSymbol->emitDone(); + ClangdFollowSymbol * const followSymbol = m_followSymbol; m_followSymbol = nullptr; + if (resetFollowSymbolData) + followSymbol->emitDone(); } IAssistProposal *ClangdFollowSymbol::VirtualFunctionAssistProcessor::createProposal(bool final)