From a1353a9d48bc8a45516f7d9323c5a9f99194b310 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Thu, 6 Dec 2012 19:43:11 +0100 Subject: [PATCH] Fix incorrect usage of list iterators 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 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 70a739427..0e97c5a2b 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -1227,11 +1227,14 @@ void DolphinView::updateViewState() QSet selectedItems = selectionManager->selectedItems(); - for (QList::iterator it = m_selectedUrls.begin(); it != m_selectedUrls.end(); ++it) { + QList::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; } } -- 2.47.3