From 97c03e0f3314dae5520deb901dda73d1cf8df201 Mon Sep 17 00:00:00 2001 From: "Lamarque V. Souza" Date: Sat, 30 Nov 2019 20:12:21 -0300 Subject: [PATCH] Fix crash when starting Krita with Qt compiled in debug mode. This is the backtrace: 0 0x00007ffff38a11cc in KoColorSet::getGroup(QString const&) () from /usr/lib64/libkritapigment.so.18 1 0x00007ffff3d2aa69 in KisPaletteModel::index(int, int, QModelIndex const&) const () from /usr/lib64/libkritawidgets.so.18 2 0x00007ffff5812796 in QAbstractItemView::setModel(QAbstractItemModel*) () from /usr/lib64/libQt5Widgets.so.5 3 0x00007ffff582e749 in QHeaderView::setModel(QAbstractItemModel*) () from /usr/lib64/libQt5Widgets.so.5 4 0x00007ffff5871493 in QTableView::setModel(QAbstractItemModel*) () from /usr/lib64/libQt5Widgets.so.5 5 0x00007ffff3d31e17 in KisPaletteView::setPaletteModel(KisPaletteModel*) () from /usr/lib64/libkritawidgets.so.18 6 0x00007ffff3d2691e in KisDlgInternalColorSelector::KisDlgInternalColorSelector(QWidget*, KoColor, KisDlgInternalColorSelector::Config, QString const&, KoColorDisplayRendererInterface const*) () from /usr/lib64/libkritawidgets.so.18 7 0x00007ffff7000d67 in KoDualColorButton::Private::init(KoDualColorButton*) () from /usr/lib64/libkritaui.so.18 8 0x00007ffff7002c5b in KoDualColorButton::KoDualColorButton(KoColor const&, KoColor const&, KoColorDisplayRendererInterface const*, QWidget*, QWidget*) () from /usr/lib64/libkritaui.so.18 9 0x00007ffff6e2b5b5 in KisControlFrame::setup(QWidget*) () from /usr/lib64/libkritaui.so.18 10 0x00007ffff71014ea in KisViewManager::KisViewManager(QWidget*, KActionCollection*) () from /usr/lib64/libkritaui.so.18 11 0x00007ffff70cb72b in KisMainWindow::KisMainWindow(QUuid) () from /usr/lib64/libkritaui.so.18 12 0x00007ffff70d8352 in KisPart::createMainWindow(QUuid) () from /usr/lib64/libkritaui.so.18 13 0x00007ffff70d85de in KisPart::startBlankSession() () from /usr/lib64/libkritaui.so.18 14 0x00007ffff70995b9 in KisApplication::start(KisApplicationArguments const&) () from /usr/lib64/libkritaui.so.18 15 0x0000555555e4e229 in main () The KisPaletteModel::index() call is inside an Q_ASSERT_X in QAbstractItemView::setModel(), so you have to compile Qt in debug mode to reproduce this crash. m_rowGroupNameMap is empty during the startup. --- libs/widgets/KisPaletteModel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/widgets/KisPaletteModel.cpp b/libs/widgets/KisPaletteModel.cpp index f1c4e71f8b..464c7f0dba 100644 --- a/libs/widgets/KisPaletteModel.cpp +++ b/libs/widgets/KisPaletteModel.cpp @@ -94,6 +94,9 @@ QModelIndex KisPaletteModel::index(int row, int column, const QModelIndex& paren Q_UNUSED(parent); Q_ASSERT(m_colorSet); int groupNameRow = groupNameRowForRow(row); + if (groupNameRow == -1) { + return {}; + } KisSwatchGroup *group = m_colorSet->getGroup(m_rowGroupNameMap[groupNameRow]); Q_ASSERT(group); return createIndex(row, column, group); -- 2.24.1