diff --git a/src/kconcatenaterowsproxymodel.cpp b/src/kconcatenaterowsproxymodel.cpp --- a/src/kconcatenaterowsproxymodel.cpp +++ b/src/kconcatenaterowsproxymodel.cpp @@ -67,6 +67,9 @@ QModelIndex KConcatenateRowsProxyModel::mapFromSource(const QModelIndex &sourceIndex) const { const QAbstractItemModel *sourceModel = sourceIndex.model(); + if (!sourceModel) { + return {}; + } int rowsPrior = d->computeRowsPrior(sourceModel); return createIndex(rowsPrior + sourceIndex.row(), sourceIndex.column()); } @@ -107,13 +110,16 @@ QMap KConcatenateRowsProxyModel::itemData(const QModelIndex &proxyIndex) const { const QModelIndex sourceIndex = mapToSource(proxyIndex); + if (!sourceIndex.isValid()) { + return {}; + } return sourceIndex.model()->itemData(sourceIndex); } Qt::ItemFlags KConcatenateRowsProxyModel::flags(const QModelIndex &index) const { const QModelIndex sourceIndex = mapToSource(index); - return sourceIndex.model()->flags(sourceIndex); + return sourceIndex.isValid() ? sourceIndex.model()->flags(sourceIndex) : Qt::ItemFlags(); } QVariant KConcatenateRowsProxyModel::headerData(int section, Qt::Orientation orientation, int role) const @@ -146,8 +152,12 @@ QModelIndex KConcatenateRowsProxyModel::index(int row, int column, const QModelIndex &parent) const { - Q_ASSERT(row >= 0); - Q_ASSERT(column >= 0); + if(row < 0) { + return {}; + } + if(column < 0) { + return {}; + } int sourceRow; QAbstractItemModel *sourceModel = d->sourceModelForRow(row, &sourceRow); if (!sourceModel) {