From 81ec99b58a8986a15b273355a944d72ef7956ae1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 24 Aug 2017 16:04:26 +0100 Subject: [PATCH] Don't crash in data() if no data has ever been set. Allow adding columns --- qrenderdoc/Widgets/Extended/RDTreeWidget.cpp | 2 +- qrenderdoc/Widgets/Extended/RDTreeWidget.h | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp b/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp index a049c535c..c3b93b04b 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp +++ b/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp @@ -260,7 +260,7 @@ RDTreeWidgetItem::~RDTreeWidgetItem() QVariant RDTreeWidgetItem::data(int column, int role) const { - if(column >= m_data->count()) + if(m_data == NULL || column >= m_data->count()) return QVariant(); const QVector &dataVec = (*m_data)[column]; diff --git a/qrenderdoc/Widgets/Extended/RDTreeWidget.h b/qrenderdoc/Widgets/Extended/RDTreeWidget.h index dafe84cc8..fa2065ddc 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeWidget.h +++ b/qrenderdoc/Widgets/Extended/RDTreeWidget.h @@ -50,7 +50,10 @@ public: inline void setIcon(int column, const QIcon &icon) { if(column >= m_icons.size()) - return; + { + m_text.resize(column + 1); + m_icons.resize(m_text.size()); + } m_icons[column] = icon; dataChanged(column, Qt::DecorationRole); @@ -94,7 +97,10 @@ public: inline void setText(int column, const QVariant &value) { if(column >= m_text.size()) - return; + { + m_text.resize(column + 1); + m_icons.resize(m_text.size()); + } m_text[column] = value; dataChanged(column, Qt::DisplayRole);