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/tests/kfileitemmodeltest.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/tests/kfileitemmodeltest.cpp') diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp index 23b899136..18580c24b 100644 --- a/src/tests/kfileitemmodeltest.cpp +++ b/src/tests/kfileitemmodeltest.cpp @@ -162,14 +162,17 @@ void KFileItemModelTest::testNewItems() void KFileItemModelTest::testRemoveItems() { m_testDir->createFile("a.txt"); + m_testDir->createFile("b.txt"); m_dirLister->openUrl(m_testDir->url()); QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); - QCOMPARE(m_model->count(), 1); + QCOMPARE(m_model->count(), 2); + QVERIFY(isModelConsistent()); m_testDir->removeFile("a.txt"); m_dirLister->updateDirectory(m_testDir->url()); QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsRemoved(KItemRangeList)), DefaultTimeout)); - QCOMPARE(m_model->count(), 0); + QCOMPARE(m_model->count(), 1); + QVERIFY(isModelConsistent()); } void KFileItemModelTest::testSetData() @@ -675,6 +678,10 @@ void KFileItemModelTest::testNameFilter() bool KFileItemModelTest::isModelConsistent() const { + if (m_model->m_items.count() != m_model->m_itemData.count()) { + return false; + } + for (int i = 0; i < m_model->count(); ++i) { const KFileItem item = m_model->fileItem(i); if (item.isNull()) { -- cgit v1.3