From 6a5cc268d260d248e5f8e7ab7606750d3ecc0c81 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 4 Aug 2020 16:52:09 +0200 Subject: [PATCH] Core: Fix crash on exit We accessed a reference after removing the value from the container. Change-Id: Idfb97093b7a23ba04e5cb0582c81031f431dce88 Reviewed-by: Christian Stenger --- src/plugins/coreplugin/statusbarmanager.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/statusbarmanager.cpp b/src/plugins/coreplugin/statusbarmanager.cpp index 5d9116379fe..182375b264b 100644 --- a/src/plugins/coreplugin/statusbarmanager.cpp +++ b/src/plugins/coreplugin/statusbarmanager.cpp @@ -143,12 +143,11 @@ void StatusBarManager::addStatusBarWidget(QWidget *widget, void StatusBarManager::destroyStatusBarWidget(QWidget *widget) { QTC_ASSERT(widget, return); - for (const QPointer &context : m_contexts) { - if (context->widget() == widget) { - m_contexts.removeAll(context); - delete context; - break; - } + const auto it = std::find_if(m_contexts.begin(), m_contexts.end(), + [widget](const auto &context) { return context->widget() == widget; }); + if (it != m_contexts.end()) { + delete *it; + m_contexts.erase(it); } widget->setParent(nullptr); delete widget;