[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs
From:       David Faure <faure () kde ! org>
Date:       2009-05-23 2:14:42
Message-ID: 1243044882.906622.1286.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 971639 by dfaure:

Fix recursive deletion of a directory containing a symlink-to-a-dir. Bug detected by \
testtrash, but now with unittest in kdelibs.


 M  +5 -0      kio/tests/jobtest.cpp  
 M  +1 -0      kio/tests/kfileitemtest.cpp  
 M  +2 -1      kioslave/file/file.cpp  


--- trunk/KDE/kdelibs/kio/tests/jobtest.cpp #971638:971639
@@ -1171,7 +1171,12 @@
 #ifndef Q_WS_WIN
     // A broken symlink:
     createTestSymlink(dest+"/broken_symlink");
+    // A symlink to a dir:
+    bool symlink_ok = symlink( KDESRCDIR, QFile::encodeName( dest + \
"/symlink_to_dir" ) ) == 0; +    if ( !symlink_ok )
+        kFatal() << "couldn't create symlink: " << strerror( errno ) ;
 #endif
+
     KIO::Job* job = KIO::del(KUrl(dest), KIO::HideProgressInfo);
     job->setUiDelegate(0);
     bool ok = KIO::NetAccess::synchronousRun(job, 0);
--- trunk/KDE/kdelibs/kio/tests/kfileitemtest.cpp #971638:971639
@@ -66,6 +66,7 @@
     QVERIFY(QFile::remove(symlink));
     QVERIFY(QFile(tempDir.name()).link(symlink));
     KFileItem symlinkToDirItem(symlinkUrl, QString(), KFileItem::Unknown);
+    QCOMPARE((uint)symlinkToDirItem.permissions(), (uint)0700);
     QCOMPARE(symlinkToDirItem.permissionsString(), QString("lrwx------"));
 }
 
--- trunk/KDE/kdelibs/kioslave/file/file.cpp #971638:971639
@@ -1309,8 +1309,9 @@
     QStringList dirsToDelete;
     while ( it.hasNext() ) {
         const QString itemPath = it.next();
+        //kDebug() << "itemPath=" << itemPath;
         const QFileInfo info = it.fileInfo();
-        if (info.isDir())
+        if (info.isDir() && !info.isSymLink())
             dirsToDelete.prepend(itemPath);
         else {
             //kDebug() << "QFile::remove" << itemPath;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic