File patch-r906020.diff of Package kdelibs4
Subject: Fix bug in KArchiveDirectory paths starting with '.'
From: wstephenson@suse.de
Bug:
Patch-upstream: 906020
--- kio/kio/karchive.cpp (revision 906019)
+++ kio/kio/karchive.cpp (revision 906020)
@@ -693,7 +693,7 @@ QStringList KArchiveDirectory::entries()
const KArchiveEntry* KArchiveDirectory::entry( const QString& _name ) const
{
- QString name = _name;
+ QString name = QDir::cleanPath(_name);
int pos = name.indexOf( '/' );
if ( pos == 0 ) // ouch absolute path (see also KArchive::findOrCreate)
{
@@ -713,8 +713,8 @@ const KArchiveEntry* KArchiveDirectory::
}
if ( pos != -1 )
{
- QString left = name.left( pos );
- QString right = name.mid( pos + 1 );
+ const QString left = name.left(pos);
+ const QString right = name.mid(pos + 1);
//kDebug() << "left=" << left << "right=" << right;
--- kio/tests/karchivetest.cpp (revision 906019)
+++ kio/tests/karchivetest.cpp (revision 906020)
@@ -179,6 +179,20 @@ static void testFileData( KArchive* arch
QVERIFY(e->isFile());
QCOMPARE(e->symLinkTarget(), QString("test3"));
#endif
+
+ // Test "./" prefix for KOffice (xlink:href="./ObjectReplacements/Object 1")
+ e = dir->entry( "./hugefile" );
+ QVERIFY( e && e->isFile() );
+ e = dir->entry( "./my/dir/test3" );
+ QVERIFY( e && e->isFile() );
+
+ // Test directory entries
+ e = dir->entry( "my" );
+ QVERIFY(e && e->isDirectory());
+ e = dir->entry( "my/" );
+ QVERIFY(e && e->isDirectory());
+ e = dir->entry( "./my/" );
+ QVERIFY(e && e->isDirectory());
}
static void testCopyTo( KArchive* archive )
Index: kio/kio/karchive.cpp
===================================================================
Index: kio/tests/karchivetest.cpp
===================================================================