[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