diff options
| author | Ismael Asensio <[email protected]> | 2020-11-06 21:22:14 +0100 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2020-11-08 21:59:34 +0000 |
| commit | ee4ab8ce699bd0fd10fe664e053eb6f26da94268 (patch) | |
| tree | 4b6c8f3eac895168893fa9de8136f13c296d74b7 /src/kitemviews/kitemlistview.cpp | |
| parent | e270aae9203949d25e983f53f33415fb17a0d064 (diff) | |
Iterate over a const copy list of containers
This effectively reverts the mutable iterations approach on
2448f88c5f42d7a2040fcf3bcd3c5f2a2f62cd03, and fix crashes
and ghost items when using the filter bar
BUG: 428374
Diffstat (limited to 'src/kitemviews/kitemlistview.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 281edc3e9..f6e5e666b 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -1155,10 +1155,10 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges) QVector<int> itemsToMove; // Remove all KItemListWidget instances that got deleted - QMutableHashIterator<int, KItemListWidget*> it(m_visibleItems); - while (it.hasNext()) { - it.next(); - KItemListWidget* widget = it.value(); + // Iterate over a const copy because the container is mutated within the loop + // directly and in `recycleWidget()` (https://bugs.kde.org/show_bug.cgi?id=428374) + const auto visibleItems = m_visibleItems; + for (KItemListWidget* widget : visibleItems) { const int i = widget->index(); if (i < firstRemovedIndex) { continue; |
