summaryrefslogblamecommitdiff
path: root/user/krita/fix-nullptr-deref.patch
blob: 07c1536a0d73ddae0847655e9eb66a9d95394a1c (plain) (tree)








































































                                                                                                  
From 97c03e0f3314dae5520deb901dda73d1cf8df201 Mon Sep 17 00:00:00 2001
From: "Lamarque V. Souza" <lamarque@kde.org>
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