From 854b0acd1a259fab40e42c8470bb144c955dcc5a Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 4 Dec 2011 18:16:39 +0100 Subject: Fix crash #1 when filtering items When filtering items it was possible that the current index got an invalid value which resulted in accessing the URL of a null-KFileItem. There is still one (general) open issue in KFileItemModelRolesUpdater (crash #2) where a KFileItem that is already null gets read. It is not really related to filtering but can be triggered quite easy when filtering huge directories with enabled previews. CCBUG: 287642 --- src/kitemviews/kitemlistselectionmanager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/kitemviews/kitemlistselectionmanager.cpp') diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index fb279796f..448e79293 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -293,15 +293,19 @@ void KItemListSelectionManager::itemsRemoved(const KItemRangeList& itemRanges) if (currentItem < itemRange.index) { break; } + if (currentItem >= itemRange.index + itemRange.count) { currentItem -= itemRange.count; - } else if (currentItem >= m_model->count()) { + } + + if (currentItem >= m_model->count()) { currentItem = m_model->count() - 1; } } // Calling setCurrentItem would trigger the selectionChanged signal, but we want to // emit it only once in this function -> change the current item manually and emit currentChanged m_currentItem = currentItem; + Q_ASSERT(m_currentItem < m_model->count()); emit currentChanged(m_currentItem, previousCurrent); } -- cgit v1.3