From 8ea70c51853d05e71796438c82d8145baa386343 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 19 Jun 2023 07:43:13 +0200 Subject: [PATCH] CppEditor: Fix crash on proposal creation The assumption that all items are CppAssistProposalItem is wrong. Snippets items have been AssistProposalItems, and since 22c72f9999814dc87864b6174d686098e2e15aa0 they are SnippetProposalItems. Change-Id: Ic483741f6e7eb5382d327702600c88d6ec6e30ed Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppcompletionassist.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/plugins/cppeditor/cppcompletionassist.cpp b/src/plugins/cppeditor/cppcompletionassist.cpp index 5466f675eaf..7a886a96c0f 100644 --- a/src/plugins/cppeditor/cppcompletionassist.cpp +++ b/src/plugins/cppeditor/cppcompletionassist.cpp @@ -850,20 +850,20 @@ IAssistProposal *InternalCppCompletionAssistProcessor::createContentProposal() QSet processed; auto it = m_completions.begin(); while (it != m_completions.end()) { - auto item = static_cast(*it); - if (!processed.contains(item->text()) || item->isSnippet()) { + if ((*it)->isSnippet()) { ++it; - if (!item->isSnippet()) { - processed.insert(item->text()); - if (!item->isOverloaded()) { - if (auto symbol = qvariant_cast(item->data())) { - if (Function *funTy = symbol->type()->asFunctionType()) { - if (funTy->hasArguments()) - item->markAsOverloaded(); - } + } else if (!processed.contains((*it)->text())) { + auto item = static_cast(*it); + processed.insert(item->text()); + if (!item->isOverloaded()) { + if (auto symbol = qvariant_cast(item->data())) { + if (Function *funTy = symbol->type()->asFunctionType()) { + if (funTy->hasArguments()) + item->markAsOverloaded(); } } } + ++it; } else { delete *it; it = m_completions.erase(it);