diff options
| author | Peter Penz <[email protected]> | 2011-12-04 18:16:39 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-12-04 18:21:46 +0100 |
| commit | 854b0acd1a259fab40e42c8470bb144c955dcc5a (patch) | |
| tree | 376e1aa31a85dd410ba1d4236cb0b3c26c83763a /src/kitemviews/kitemlistselectionmanager.cpp | |
| parent | 031b1a4c19945456a389ddb00630aadf95b0c09a (diff) | |
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
Diffstat (limited to 'src/kitemviews/kitemlistselectionmanager.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistselectionmanager.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
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); } |
