]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix incorrect usage of list iterators
authorFrank Reininghaus <frank78ac@googlemail.com>
Thu, 6 Dec 2012 18:43:11 +0000 (19:43 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 6 Dec 2012 18:48:59 +0000 (19:48 +0100)
The problem was that we erased an iterator from the list and then
incremented it. This can lead to problems (namely, random crashes) if
the iterator pointed to the last list element.

Thanks to Sandro Mani for testing the patch!

BUG: 311246
FIXED-IN: 4.9.5

src/views/dolphinview.cpp

index 70a7394274a65c3a8be9808e6993b8c4cfbffac8..0e97c5a2bf40d27421d04e49641e4dc82a9ca1d5 100644 (file)
@@ -1227,11 +1227,14 @@ void DolphinView::updateViewState()
 
         QSet<int> selectedItems = selectionManager->selectedItems();
 
-        for (QList<KUrl>::iterator it = m_selectedUrls.begin(); it != m_selectedUrls.end(); ++it) {
+        QList<KUrl>::iterator it = m_selectedUrls.begin();
+        while (it != m_selectedUrls.end()) {
             const int index = m_model->index(*it);
             if (index >= 0) {
                 selectedItems.insert(index);
-                m_selectedUrls.erase(it);
+                it = m_selectedUrls.erase(it);
+            } else {
+                 ++it;
             }
         }