diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2020-08-27 16:05:43 +0200 |
---|---|---|
committer | Andrei Golubev <andrei.golubev@qt.io> | 2020-08-27 18:58:19 +0200 |
commit | 4b2f5371d9ba7b8d2dc068223866bbb3c8242beb (patch) | |
tree | eee05d2ca33d5f0cb6bd2ba724611765e6f5aadc /src/widgets/itemviews | |
parent | 7883bf730405b20594dd1385b8e817160a5895f2 (diff) |
Fix subtle issue in tst_qtablewidget
Fixed UB when QList::begin() iterator is used after a call to
QList::remove(). As QList is now effectively double-ended container,
there is no guarantee on iterator validity upon erasure
Task-number: QTBUG-84320
Change-Id: I27793f131e8e23a41ac6c2c1db0bdc61ee58891f
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qtablewidget.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index f0c138e9ce..ac59271c8d 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -589,7 +589,7 @@ void QTableModel::ensureSorted(int column, Qt::SortOrder order, int oldRow = sorting.at(i).second; QTableWidgetItem *item = colItems.at(oldRow); colItems.remove(oldRow); - vit = sortedInsertionIterator(vit, colItems.end(), order, item); + vit = sortedInsertionIterator(colItems.begin(), colItems.end(), order, item); int newRow = qMax((int)(vit - colItems.begin()), 0); if ((newRow < oldRow) && !(*item < *colItems.at(oldRow - 1)) && !(*colItems.at(oldRow - 1) < *item)) newRow = oldRow; |