Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > d9b360ee2bb591aec74456d859429422 > files > 10

kdelibs4-4.1.2-5mdv2009.0.src.rpm

--- kdelibs-4.1.2/kio/kio/kdirmodel.cpp~	2008-09-25 13:57:45.000000000 +0200
+++ kdelibs-4.1.2/kio/kio/kdirmodel.cpp	2008-10-02 21:43:42.000000000 +0200
@@ -168,6 +168,10 @@
     if (url == nodeUrl)
         return m_rootNode;
 
+    // Protocol mismatch? Don't even start comparing paths then. #171721     
+    if (url.protocol() != nodeUrl.protocol())                                
+        return 0; 
+
     const QString pathStr = url.path();
     KDirModelDirNode* dirNode = m_rootNode;
 
--- kdelibs-4.1.2/kio/tests/kdirmodeltest.cpp~	2008-09-25 13:57:45.000000000 +0200
+++ kdelibs-4.1.2/kio/tests/kdirmodeltest.cpp	2008-10-02 21:45:32.000000000 +0200
@@ -507,6 +507,26 @@
     fillModel(true);
 }
 
+void KDirModelTest::testZipFile() // # 171721
+{
+    const QString path = KDESRCDIR;
+    KDirLister* dirLister = m_dirModel.dirLister();
+    dirLister->openUrl(KUrl(path), KDirLister::NoFlags);
+    connect(dirLister, SIGNAL(completed()), this, SLOT(slotListingCompleted()));
+    enterLoop();
+    disconnect(dirLister, SIGNAL(completed()), this, SLOT(slotListingCompleted()));
+
+    KUrl zipUrl(path);
+    zipUrl.addPath("wronglocalsizes.zip"); // just a zip file lying here for other reasons
+    QVERIFY(QFile::exists(zipUrl.path()));
+    zipUrl.setProtocol("zip");
+    QModelIndex index = m_dirModel.indexForUrl(zipUrl);
+    QVERIFY(!index.isValid()); // protocol mismatch, can't find it!
+    zipUrl.setProtocol("file");
+    index = m_dirModel.indexForUrl(zipUrl);
+    QVERIFY(index.isValid());
+}      
+
 void KDirModelTest::testDeleteFiles()
 {
     const int oldTopLevelRowCount = m_dirModel.rowCount();
--- kdelibs-4.1.2/kio/tests/kdirmodeltest.h~	2008-09-25 13:57:45.000000000 +0200
+++ kdelibs-4.1.2/kio/tests/kdirmodeltest.h	2008-10-02 21:46:24.000000000 +0200
@@ -43,6 +43,7 @@
     void testRenameFile();
     void testExpandToUrl_data();
     void testExpandToUrl();
+    void testZipFile();
     void testDeleteFile();
     void testDeleteFiles();