From 09f0ddb50c69fb263f9aa44adcb00a62d7f89cc6 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 23 Aug 2022 13:47:26 +0200 Subject: [PATCH] CppEditor: fix crash in outline Make sure the document lives as long as the generated symbol items. Fixes: QTCREATORBUG-28091 Change-Id: I515748ab7fd198699434ac5c19585afa20df613d Reviewed-by: Eike Ziller --- src/plugins/cppeditor/cppoverviewmodel.cpp | 7 ++++--- src/plugins/cppeditor/cppoverviewmodel.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/cppeditor/cppoverviewmodel.cpp b/src/plugins/cppeditor/cppoverviewmodel.cpp index a2cfd794701..13cb4a68361 100644 --- a/src/plugins/cppeditor/cppoverviewmodel.cpp +++ b/src/plugins/cppeditor/cppoverviewmodel.cpp @@ -206,9 +206,8 @@ QMimeData *OverviewModel::mimeData(const QModelIndexList &indexes) const void OverviewModel::update(CPlusPlus::Document::Ptr doc) { - m_cppDocument = doc; - if (doc) - m_updateTimer->start(); + m_candidate = doc; + m_updateTimer->start(); } int OverviewModel::editorRevision() @@ -219,6 +218,8 @@ int OverviewModel::editorRevision() void OverviewModel::rebuild() { beginResetModel(); + m_cppDocument = m_candidate; + m_candidate.reset(); auto root = new SymbolItem; if (m_cppDocument) buildTree(root, true); diff --git a/src/plugins/cppeditor/cppoverviewmodel.h b/src/plugins/cppeditor/cppoverviewmodel.h index 6f29eed62b0..d05d51c5138 100644 --- a/src/plugins/cppeditor/cppoverviewmodel.h +++ b/src/plugins/cppeditor/cppoverviewmodel.h @@ -80,6 +80,7 @@ private: void buildTree(SymbolItem *root, bool isRoot); private: + CPlusPlus::Document::Ptr m_candidate; CPlusPlus::Document::Ptr m_cppDocument; CPlusPlus::Overview m_overview; friend class SymbolItem;