diff options
-rw-r--r-- | src/gui/itemmodels/qstandarditemmodel.cpp | 6 | ||||
-rw-r--r-- | tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index d1e0604caf..050c9a662b 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -455,7 +455,7 @@ void QStandardItemModelPrivate::_q_emitItemChanged(const QModelIndex &topLeft, bool QStandardItemPrivate::insertRows(int row, const QList<QStandardItem*> &items) { Q_Q(QStandardItem); - if ((row < 0) || (row > rowCount())) + if ((row < 0) || (row > rowCount()) || items.isEmpty()) return false; int count = items.count(); if (model) @@ -486,7 +486,7 @@ bool QStandardItemPrivate::insertRows(int row, const QList<QStandardItem*> &item bool QStandardItemPrivate::insertRows(int row, int count, const QList<QStandardItem*> &items) { Q_Q(QStandardItem); - if ((count < 1) || (row < 0) || (row > rowCount())) + if ((count < 1) || (row < 0) || (row > rowCount()) || count == 0) return false; if (model) model->d_func()->rowsAboutToBeInserted(q, row, row + count - 1); @@ -528,7 +528,7 @@ bool QStandardItemPrivate::insertRows(int row, int count, const QList<QStandardI bool QStandardItemPrivate::insertColumns(int column, int count, const QList<QStandardItem*> &items) { Q_Q(QStandardItem); - if ((count < 1) || (column < 0) || (column > columnCount())) + if ((count < 1) || (column < 0) || (column > columnCount()) || count == 0) return false; if (model) model->d_func()->columnsAboutToBeInserted(q, column, column + count - 1); diff --git a/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp index d393ac70da..1ecfdb5e47 100644 --- a/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp +++ b/tests/auto/gui/itemmodels/qstandarditemmodel/tst_qstandarditemmodel.cpp @@ -132,7 +132,7 @@ private slots: void taskQTBUG_45114_setItemData(); private: - QAbstractItemModel *m_model; + QStandardItemModel *m_model; QPersistentModelIndex persistent; QVector<QModelIndex> rcParent; QVector<int> rcFirst; @@ -292,6 +292,12 @@ void tst_QStandardItemModel::insertRows() // check header data has moved QCOMPARE(m_model->headerData(3, Qt::Vertical).toString(), headerLabel); + + // do not assert on empty list + QStandardItem *si = m_model->invisibleRootItem(); + si->insertRow(0, QList<QStandardItem*>()); + si->insertRows(0, 0); + si->insertRows(0, QList<QStandardItem*>()); } void tst_QStandardItemModel::insertRowsItems() @@ -402,6 +408,11 @@ void tst_QStandardItemModel::insertColumns() // check header data has moved QCOMPARE(m_model->headerData(3, Qt::Horizontal).toString(), headerLabel); + + // do not assert on empty list + QStandardItem *si = m_model->invisibleRootItem(); + si->insertColumn(0, QList<QStandardItem*>()); + si->insertColumns(0, 0); } void tst_QStandardItemModel::removeRows() |