From 06001ce0085c5fd47bbcc3c7ab151f7c0ac2f0ed Mon Sep 17 00:00:00 2001 From: Honglei Zhang Date: Wed, 7 Mar 2012 18:54:58 +0200 Subject: Fix crash when an invalid filter is set QSqlTableModel::headerData() generates a crash if an invalid filter is set. QSqlQueryModel::indexInQuery() should check the index value before applied to d->colOffsets[]. QSqlQueryModel::initRecordAndPrimaryIndex() is updated to sync the size of rec and colOffsets. Task-number: QTBUG-23879 Change-Id: Ic9f88bb288592aa6fb3c1415cc818632dadaab56 Reviewed-by: Michael Goddard Reviewed-by: Mark Brand --- src/sql/models/qsqlquerymodel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/sql/models/qsqlquerymodel.cpp') diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp index 341804f1ae..fefb87dcf5 100644 --- a/src/sql/models/qsqlquerymodel.cpp +++ b/src/sql/models/qsqlquerymodel.cpp @@ -591,7 +591,8 @@ QModelIndex QSqlQueryModel::indexInQuery(const QModelIndex &item) const { Q_D(const QSqlQueryModel); if (item.column() < 0 || item.column() >= d->rec.count() - || !d->rec.isGenerated(item.column())) + || !d->rec.isGenerated(item.column()) + || item.column() >= d->colOffsets.size()) return QModelIndex(); return createIndex(item.row(), item.column() - d->colOffsets[item.column()], item.internalPointer()); -- cgit v1.2.3