Hello community,

here is the log from the commit of package karchive for openSUSE:Factory 
checked in at 2015-11-24 22:22:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/karchive (Old)
 and      /work/SRC/openSUSE:Factory/.karchive.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "karchive"

Changes:
--------
--- /work/SRC/openSUSE:Factory/karchive/karchive.changes        2015-10-19 
22:21:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.karchive.new/karchive.changes   2015-11-24 
22:22:04.000000000 +0100
@@ -1,0 +2,9 @@
+Sun Nov  8 16:57:42 UTC 2015 - hrvoje.sen...@gmail.com
+
+- Update to 5.16.0 (boo#955067)
+  * Fix KArchive for behavior change in Qt 5.6
+  * Fix memleaks, lower memory usage
+  * For more details please see:
+    https://www.kde.org/announcements/kde-frameworks-5.16.0.php
+
+-------------------------------------------------------------------

Old:
----
  karchive-5.15.0.tar.xz

New:
----
  karchive-5.16.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ karchive.spec ++++++
--- /var/tmp/diff_new_pack.ktDxFw/_old  2015-11-24 22:22:05.000000000 +0100
+++ /var/tmp/diff_new_pack.ktDxFw/_new  2015-11-24 22:22:05.000000000 +0100
@@ -17,9 +17,9 @@
 
 
 %define lname   libKF5Archive5
-%define _tar_path 5.15
+%define _tar_path 5.16
 Name:           karchive
-Version:        5.15.0
+Version:        5.16.0
 Release:        0
 BuildRequires:  cmake >= 2.8.12
 BuildRequires:  extra-cmake-modules >= %{_tar_path}

++++++ karchive-5.15.0.tar.xz -> karchive-5.16.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/CMakeLists.txt 
new/karchive-5.16.0/CMakeLists.txt
--- old/karchive-5.15.0/CMakeLists.txt  2015-10-03 12:11:51.000000000 +0200
+++ new/karchive-5.16.0/CMakeLists.txt  2015-11-09 08:55:01.000000000 +0100
@@ -3,7 +3,7 @@
 project(KArchive)
 
 include(FeatureSummary)
-find_package(ECM 5.15.0  NO_MODULE)
+find_package(ECM 5.16.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -49,7 +49,7 @@
 include(ECMSetupVersion)
 include(ECMGenerateHeaders)
 
-set(KF5_VERSION "5.15.0") # handled by release scripts
+set(KF5_VERSION "5.16.0") # handled by release scripts
 
 ecm_setup_version(${KF5_VERSION}
     VARIABLE_PREFIX KARCHIVE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/autotests/deprecatedtest.cpp 
new/karchive-5.16.0/autotests/deprecatedtest.cpp
--- old/karchive-5.15.0/autotests/deprecatedtest.cpp    2015-10-03 
12:11:51.000000000 +0200
+++ new/karchive-5.16.0/autotests/deprecatedtest.cpp    2015-11-09 
08:55:01.000000000 +0100
@@ -37,7 +37,7 @@
         QVERIFY(zip.open(QIODevice::WriteOnly));
 
         const QByteArray fileData("There could be a fire, if there is smoke.");
-        const QString fileName = QLatin1String("wisdom");
+        const QString fileName = QStringLiteral("wisdom");
         QVERIFY(zip.writeFile(fileName, "konqi", "dragons", 
fileData.constData(), fileData.size()));
 
         QVERIFY(zip.close());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/autotests/karchivetest.cpp 
new/karchive-5.16.0/autotests/karchivetest.cpp
--- old/karchive-5.15.0/autotests/karchivetest.cpp      2015-10-03 
12:11:51.000000000 +0200
+++ new/karchive-5.16.0/autotests/karchivetest.cpp      2015-11-09 
08:55:01.000000000 +0100
@@ -36,6 +36,7 @@
 
 #ifdef Q_OS_WIN
 #include <Windows.h>
+#include <QScopedValueRollback>
 #else
 #include <grp.h>
 #include <pwd.h>
@@ -59,7 +60,7 @@
     QVERIFY(archive->writeData("Du", 2));
     QVERIFY(archive->finishWriting(8));
     // Add local file
-    QFile localFile("test3");
+    QFile localFile(QStringLiteral("test3"));
     QVERIFY(localFile.open(QIODevice::WriteOnly));
     QVERIFY(localFile.write("Noch so einer", 13) == 13);
     localFile.close();
@@ -139,22 +140,22 @@
         const KArchiveEntry *entry = dir->entry(it);
 
         QString descr;
-        descr += QString("mode=") + QString::number(entry->permissions(), 8) + 
' ';
+        descr += QStringLiteral("mode=") + 
QString::number(entry->permissions(), 8) + ' ';
         if (listingFlags & WithUserGroup) {
-            descr += QString("user=") + entry->user() + ' ';
-            descr += QString("group=") + entry->group() + ' ';
+            descr += QStringLiteral("user=") + entry->user() + ' ';
+            descr += QStringLiteral("group=") + entry->group() + ' ';
         }
-        descr += QString("path=") + path + (it) + ' ';
-        descr += QString("type=") + (entry->isDirectory() ? "dir" : "file");
+        descr += QStringLiteral("path=") + path + (it) + ' ';
+        descr += QStringLiteral("type=") + (entry->isDirectory() ? "dir" : 
"file");
         if (entry->isFile()) {
-            descr += QString(" size=") + QString::number(static_cast<const 
KArchiveFile *>(entry)->size());
+            descr += QStringLiteral(" size=") + 
QString::number(static_cast<const KArchiveFile *>(entry)->size());
         }
         if (!entry->symLinkTarget().isEmpty()) {
-            descr += QString(" symlink=") + entry->symLinkTarget();
+            descr += QStringLiteral(" symlink=") + entry->symLinkTarget();
         }
 
         if (listingFlags & WithTime) {
-            descr += QString(" time=") + entry->date().toString("dd.MM.yyyy 
hh:mm:ss");
+            descr += QStringLiteral(" time=") + 
entry->date().toString(QStringLiteral("dd.MM.yyyy hh:mm:ss"));
         }
 
         //qDebug() << descr;
@@ -175,7 +176,7 @@
 {
     const KArchiveDirectory *dir = archive->directory();
 
-    const KArchiveFile *f = dir->file("z/test3");
+    const KArchiveFile *f = dir->file(QStringLiteral("z/test3"));
     QByteArray arr(f->data());
     QCOMPARE(arr.size(), 13);
     QCOMPARE(arr, QByteArray("Noch so einer"));
@@ -194,19 +195,19 @@
     QCOMPARE(QString::fromLatin1(contents.constData()), 
QString::fromLatin1(arr.constData()));
     delete dev;
 
-    const KArchiveEntry *e = dir->entry("mediumfile");
+    const KArchiveEntry *e = dir->entry(QStringLiteral("mediumfile"));
     QVERIFY(e && e->isFile());
     f = (KArchiveFile *)e;
     QCOMPARE(f->data().size(), SIZE1);
 
-    f = dir->file("hugefile");
+    f = dir->file(QStringLiteral("hugefile"));
     QCOMPARE(f->data().size(), 20000);
 
-    e = dir->entry("aaaemptydir");
+    e = dir->entry(QStringLiteral("aaaemptydir"));
     QVERIFY(e && e->isDirectory());
     QVERIFY(!dir->file("aaaemptydir"));
 
-    e = dir->entry("my/dir/test3");
+    e = dir->entry(QStringLiteral("my/dir/test3"));
     QVERIFY(e && e->isFile());
     f = (KArchiveFile *)e;
     dev = f->createDevice();
@@ -216,24 +217,24 @@
     QCOMPARE(QString::fromLatin1(secondLine.constData()), 
QString::fromLatin1("David."));
     delete dev;
 #ifndef Q_OS_WIN
-    e = dir->entry("z/test3_symlink");
+    e = dir->entry(QStringLiteral("z/test3_symlink"));
     QVERIFY(e);
     QVERIFY(e->isFile());
     QCOMPARE(e->symLinkTarget(), QString("test3"));
 #endif
 
     // Test "./" prefix for KOffice (xlink:href="./ObjectReplacements/Object 
1")
-    e = dir->entry("./hugefile");
+    e = dir->entry(QStringLiteral("./hugefile"));
     QVERIFY(e && e->isFile());
-    e = dir->entry("./my/dir/test3");
+    e = dir->entry(QStringLiteral("./my/dir/test3"));
     QVERIFY(e && e->isFile());
 
     // Test directory entries
-    e = dir->entry("my");
+    e = dir->entry(QStringLiteral("my"));
     QVERIFY(e && e->isDirectory());
-    e = dir->entry("my/");
+    e = dir->entry(QStringLiteral("my/"));
     QVERIFY(e && e->isDirectory());
-    e = dir->entry("./my/");
+    e = dir->entry(QStringLiteral("./my/"));
     QVERIFY(e && e->isDirectory());
 }
 
@@ -242,6 +243,10 @@
     QVERIFY(archive->writeFile("newfile", "New File", 0100440, "dfaure", 
"users"));
 }
 
+#ifdef Q_OS_WIN
+extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
+#endif
+
 static void testCopyTo(KArchive *archive)
 {
     const KArchiveDirectory *dir = archive->directory();
@@ -295,11 +300,15 @@
     int len = readlink(encodedFileName.data(), s.data(), s.size() - 1);
     if (len >= 0) {
         s[len] = '\0';
-        symLinkTarget = QFile::decodeName(s);
+        symLinkTarget = QFile::decodeName(s.constData());
     }
     QCOMPARE(symLinkTarget, QString("test3"));
 #endif
 
+#ifdef Q_OS_WIN
+    QScopedValueRollback<int> ntfsMode(qt_ntfs_permission_lookup);
+    qt_ntfs_permission_lookup++;
+#endif
     QVERIFY(QFileInfo(dirName + "executableAll").permissions() & 
(QFileDevice::ExeOwner | QFileDevice::ExeGroup | QFileDevice::ExeOther));
 }
 
@@ -328,7 +337,7 @@
 {
 #ifndef Q_OS_WIN
     // Prepare local symlink
-    QFile::remove("test3_symlink");
+    QFile::remove(QStringLiteral("test3_symlink"));
     if (::symlink("test3", "test3_symlink") != 0) {
         qDebug() << errno;
         QVERIFY(false);
@@ -353,7 +362,7 @@
 
 void KArchiveTest::testNonExistentFile()
 {
-    KTar tar(QLatin1String("nonexistent.tar.gz"));
+    KTar tar(QStringLiteral("nonexistent.tar.gz"));
     QVERIFY(!tar.open(QIODevice::ReadOnly));
 }
 
@@ -442,13 +451,13 @@
 {
     QFETCH(QString, fileName);
 
-    QFileInfo localFileData("test3");
+    QFileInfo localFileData(QStringLiteral("test3"));
 
     const QString systemUserName = getCurrentUserName();
     const QString systemGroupName = getCurrentGroupName();
     const QString owner = localFileData.owner();
     const QString group = localFileData.group();
-    const QString emptyTime = QDateTime().toString("dd.MM.yyyy hh:mm:ss");
+    const QString emptyTime = QDateTime().toString(QStringLiteral("dd.MM.yyyy 
hh:mm:ss"));
     const QDateTime creationTime = QFileInfo(fileName).created();
 
     // 1.6-1.7 ms per interaction, 2908428 instruction loads
@@ -464,13 +473,18 @@
 
         const KArchiveDirectory *dir = tar.directory();
         QVERIFY(dir != 0);
-        const QStringList listing = recursiveListEntries(dir, "", 
WithUserGroup | WithTime);
+        const QStringList listing = recursiveListEntries(dir, 
QLatin1String(""), WithUserGroup | WithTime);
+
 
 #ifndef Q_OS_WIN
-        QCOMPARE(listing.count(), 16);
+        const int expectedCount = 16;
 #else
-        QCOMPARE(listing.count(), 15);
+        const int expectedCount = 15;
 #endif
+        if (listing.count() != expectedCount) {
+            qWarning() << listing;
+        }
+        QCOMPARE(listing.count(), expectedCount);
         compareEntryWithTimestamp(listing[0], QString("mode=40755 user= group= 
path=aaaemptydir type=dir"), creationTime);
 
         QCOMPARE(listing[1], QString("mode=40777 user=%1 group=%2 path=dir 
type=dir time=%3").arg(systemUserName).arg(systemGroupName).arg(emptyTime));
@@ -489,13 +503,13 @@
 
         // This one was added with addLocalFile, so ignore mode.
         QString str = listing[14];
-        str.replace(QRegExp("mode.*user="), "user=");
+        str.replace(QRegExp(QStringLiteral("mode.*user=")), 
QStringLiteral("user="));
 
         compareEntryWithTimestamp(str, QString("user=%1 group=%2 path=z/test3 
type=file size=13").arg(owner).arg(group), creationTime);
 
 #ifndef Q_OS_WIN
         str = listing[15];
-        str.replace(QRegExp("mode.*path="), "path=");
+        str.replace(QRegExp(QStringLiteral("mode.*path=")), 
QStringLiteral("path="));
 
         compareEntryWithTimestamp(str, QString("path=z/test3_symlink type=file 
size=0 symlink=test3"), creationTime);
 #endif
@@ -590,7 +604,7 @@
         QVERIFY(tar.open(QIODevice::ReadOnly));
         testFileData(&tar);
         const KArchiveDirectory *dir = tar.directory();
-        const KArchiveEntry *e = dir->entry("newfile");
+        const KArchiveEntry *e = dir->entry(QStringLiteral("newfile"));
         QVERIFY(e && e->isFile());
         const KArchiveFile *f = (KArchiveFile *)e;
         QCOMPARE(f->data().size(), 8);
@@ -635,7 +649,7 @@
 
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
 
     QCOMPARE(listing[0], QString("mode=100644 user= group= 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000098
 type=file size=3"));
     QCOMPARE(listing[3], QString("mode=100644 user= group= 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000101
 type=file size=3"));
@@ -657,7 +671,7 @@
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
 
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
 
     QCOMPARE(listing.count(), 2);
 
@@ -675,7 +689,7 @@
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
 
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
 
     QCOMPARE(listing[0], QString("mode=40775 user=root group=root path=Test 
type=dir"));
     QCOMPARE(listing[1], QString("mode=40775 user=root group=root 
path=Test/qt-jambi-qtjambi-4_7 type=dir"));
@@ -701,7 +715,7 @@
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
 
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
 
     QVERIFY(listing[9].contains("trolltech/examples/generator"));
     
QVERIFY(listing[10].contains("trolltech/examples/generator/GeneratorExample.html"));
@@ -719,7 +733,7 @@
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
 
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
     //qDebug() << listing.join("\n");
 
     QVERIFY(listing[0].contains("%{APPNAME}.cpp"));
@@ -737,7 +751,7 @@
     const KArchiveDirectory *dir = tar.directory();
     QVERIFY(dir != 0);
 
-    const QStringList listing = recursiveListEntries(dir, "", WithUserGroup);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
WithUserGroup);
     //qDebug() << listing.join("\n");
 
     QVERIFY(listing[0].contains("path=d"));
@@ -763,7 +777,7 @@
 
     zip.setCompression(KZip::NoCompression);
     QByteArray zipMimeType(s_zipMimeType);
-    zip.writeFile("mimetype", zipMimeType);
+    zip.writeFile(QStringLiteral("mimetype"), zipMimeType);
     zip.setCompression(KZip::DeflateCompression);
 
     writeTestFilesToArchive(&zip);
@@ -809,7 +823,7 @@
 
 void KArchiveTest::testReadZipError()
 {
-    QFile brokenZip("broken.zip");
+    QFile brokenZip(QStringLiteral("broken.zip"));
     QVERIFY(brokenZip.open(QIODevice::WriteOnly));
 
     // incomplete magic
@@ -817,7 +831,7 @@
 
     brokenZip.close();
     {
-        KZip zip("broken.zip");
+        KZip zip(QStringLiteral("broken.zip"));
 
         QVERIFY(!zip.open(QIODevice::ReadOnly));
 
@@ -845,7 +859,7 @@
     QVERIFY(dir != 0);
 
     // ZIP has no support for per-file user/group, so omit them from the 
listing
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
 #ifndef Q_OS_WIN
     QCOMPARE(listing.count(), 17);
@@ -869,11 +883,11 @@
     QCOMPARE(listing[14], QString("mode=40777 path=z type=dir"));
     // This one was added with addLocalFile, so ignore mode
     QString str = listing[15];
-    str.replace(QRegExp("mode.*path="), "path=");
+    str.replace(QRegExp(QStringLiteral("mode.*path=")), 
QStringLiteral("path="));
     QCOMPARE(str, QString("path=z/test3 type=file size=13"));
 #ifndef Q_OS_WIN
     str = listing[16];
-    str.replace(QRegExp("mode.*path="), "path=");
+    str.replace(QRegExp(QStringLiteral("mode.*path=")), 
QStringLiteral("path="));
     QCOMPARE(str, QString("path=z/test3_symlink type=file size=5 
symlink=test3"));
 #endif
 
@@ -923,7 +937,7 @@
 
     const KArchiveDirectory *dir = zip.directory();
     QVERIFY(dir != 0);
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
     QCOMPARE(listing[0], QString("mode=100644 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000098
 type=file size=3"));
     QCOMPARE(listing[3], QString("mode=100644 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000101
 type=file size=3"));
@@ -941,7 +955,7 @@
     QVERIFY(zip.open(QIODevice::WriteOnly));
 
     const QByteArray fileData("Test of data with a russian file name");
-    const QString fileName = QString::fromUtf8("Архитектура.okular");
+    const QString fileName = QStringLiteral("Архитектура.okular");
     const QString recodedFileName = 
QFile::decodeName(QFile::encodeName(fileName));
     QVERIFY(zip.writeFile(fileName, fileData));
 
@@ -951,7 +965,7 @@
 
     const KArchiveDirectory *dir = zip.directory();
     QVERIFY(dir != 0);
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
     QCOMPARE(listing.count(), 1);
     QCOMPARE(listing[0], QString::fromUtf8("mode=100644 path=%1 type=file 
size=%2").arg(recodedFileName).arg(fileData.size()));
@@ -967,7 +981,7 @@
     QVERIFY(zip.open(QIODevice::WriteOnly));
 
     const QByteArray fileData1("There could be a fire, if there is smoke.");
-    const QString fileName = QLatin1String("wisdom");
+    const QString fileName = QStringLiteral("wisdom");
     QVERIFY(zip.writeFile(fileName, fileData1, 0100644, "konqi", "dragons"));
 
     // now overwrite it
@@ -980,7 +994,7 @@
 
     const KArchiveDirectory *dir = zip.directory();
     QVERIFY(dir != 0);
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
     QCOMPARE(listing.count(), 1);
     QCOMPARE(listing[0], QString::fromUtf8("mode=100644 path=%1 type=file 
size=%2").arg(fileName).arg(fileData2.size()));
@@ -1007,7 +1021,7 @@
     const QString dirName = tmpDir.path() + '/';
 
     const QByteArray file1Data = "Hello Shantanu";
-    const QString file1 = QLatin1String("file1");
+    const QString file1 = QStringLiteral("file1");
     QVERIFY(writeFile(dirName, file1, file1Data));
 
     {
@@ -1059,7 +1073,7 @@
     const QByteArray fileData("aaaaaaaaaaaaaaa");
 
     // ZIP has no support for per-file user/group, so omit them from the 
listing
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
     QCOMPARE(listing.count(), 2);
     QCOMPARE(listing[0], QString::fromUtf8("mode=100644 path=compressed 
type=file size=%2").arg(fileData.size()));
@@ -1079,10 +1093,10 @@
     QVERIFY(rcc.open(QIODevice::ReadOnly));
     const KArchiveDirectory *rootDir = rcc.directory();
     QVERIFY(rootDir != 0);
-    const KArchiveEntry *rrEntry = rootDir->entry("runtime_resource");
+    const KArchiveEntry *rrEntry = 
rootDir->entry(QStringLiteral("runtime_resource"));
     QVERIFY(rrEntry && rrEntry->isDirectory());
     const KArchiveDirectory *rrDir = static_cast<const KArchiveDirectory 
*>(rrEntry);
-    const KArchiveEntry *fileEntry = rrDir->entry("search_file.txt");
+    const KArchiveEntry *fileEntry = 
rrDir->entry(QStringLiteral("search_file.txt"));
     QVERIFY(fileEntry && fileEntry->isFile());
     const KArchiveFile *searchFile = static_cast<const KArchiveFile 
*>(fileEntry);
     const QByteArray fileData = searchFile->data();
@@ -1098,7 +1112,7 @@
     QFile::remove(s_zipFileName);
     QFile::remove(s_zipLocaleFileName);
 #ifndef Q_OS_WIN
-    QFile::remove("test3_symlink");
+    QFile::remove(QStringLiteral("test3_symlink"));
 #endif
 }
 
@@ -1155,7 +1169,7 @@
 
         const KArchiveDirectory *dir = k7zip.directory();
         QVERIFY(dir != 0);
-        const QStringList listing = recursiveListEntries(dir, "", 0);
+        const QStringList listing = recursiveListEntries(dir, 
QLatin1String(""), 0);
 
 #ifndef Q_OS_WIN
         QCOMPARE(listing.count(), 16);
@@ -1178,11 +1192,11 @@
         QCOMPARE(listing[13], QString("mode=40777 path=z type=dir"));
         // This one was added with addLocalFile, so ignore mode/user/group.
         QString str = listing[14];
-        str.replace(QRegExp("mode.*path="), "path=");
+        str.replace(QRegExp(QStringLiteral("mode.*path=")), 
QStringLiteral("path="));
         QCOMPARE(str, QString("path=z/test3 type=file size=13"));
 #ifndef Q_OS_WIN
         str = listing[15];
-        str.replace(QRegExp("mode.*path="), "path=");
+        str.replace(QRegExp(QStringLiteral("mode.*path=")), 
QStringLiteral("path="));
         QCOMPARE(str, QString("path=z/test3_symlink type=file size=0 
symlink=test3"));
 #endif
 
@@ -1245,7 +1259,7 @@
         QVERIFY(k7zip.open(QIODevice::ReadOnly));
         testFileData(&k7zip);
         const KArchiveDirectory *dir = k7zip.directory();
-        const KArchiveEntry *e = dir->entry("newfile");
+        const KArchiveEntry *e = dir->entry(QStringLiteral("newfile"));
         QVERIFY(e && e->isFile());
         const KArchiveFile *f = (KArchiveFile *)e;
         QCOMPARE(f->data().size(), 8);
@@ -1280,7 +1294,7 @@
 
     const KArchiveDirectory *dir = k7zip.directory();
     QVERIFY(dir != 0);
-    const QStringList listing = recursiveListEntries(dir, "", 0);
+    const QStringList listing = recursiveListEntries(dir, QLatin1String(""), 
0);
 
     QCOMPARE(listing[0], QString("mode=100644 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000098
 type=file size=3"));
     QCOMPARE(listing[3], QString("mode=100644 
path=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000101
 type=file size=3"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/k7zip.cpp 
new/karchive-5.16.0/src/k7zip.cpp
--- old/karchive-5.15.0/src/k7zip.cpp   2015-10-03 12:11:51.000000000 +0200
+++ new/karchive-5.16.0/src/k7zip.cpp   2015-11-09 08:55:01.000000000 +0100
@@ -170,6 +170,8 @@
                    const QString &user, const QString &group, const QString 
&symlink,
                    qint64 pos, qint64 size, const QByteArray &data);
 
+    ~K7ZipFileEntry();
+
     /**
      * @return the content of this file.
      * Call data() with care (only once per file), this data isn't cached.
@@ -198,12 +200,17 @@
                                qint64 pos, qint64 size, const QByteArray &data)
     : KArchiveFile(zip, name, access, date, user, group, symlink, pos, size)
     , m_data(data)
+    , m_buffer(new QBuffer)
 {
-    m_buffer = new QBuffer;
     m_buffer->setData(m_data);
     m_buffer->open(QIODevice::ReadOnly);
 }
 
+K7ZipFileEntry::~K7ZipFileEntry()
+{
+    delete m_buffer;
+}
+
 QByteArray K7ZipFileEntry::data() const
 {
     return m_data.mid(position(), size());
@@ -218,24 +225,24 @@
 {
 public:
     FileInfo()
-        : attribDefined(false)
+        : size(0)
         , attributes(0)
-        , hasStream(false)
-        , isDir(false)
-        , size(0)
         , crc(0)
+        , attribDefined(false)
         , crcDefined(false)
+        , hasStream(false)
+        , isDir(false)
     {
     }
 
     QString path;
-    bool attribDefined;
-    quint32 attributes;
-    bool hasStream;
-    bool isDir;
     quint64 size;
+    quint32 attributes;
     quint32 crc;
+    bool attribDefined;
     bool crcDefined;
+    bool hasStream;
+    bool isDir;
 };
 
 class Folder
@@ -268,6 +275,11 @@
     {
     }
 
+    ~Folder()
+    {
+        qDeleteAll(folderInfos);
+    }
+
     quint64 getUnpackSize() const
     {
         if (unpackSizes.isEmpty()) {
@@ -275,7 +287,7 @@
         }
         for (int i = unpackSizes.size() - 1; i >= 0; i--) {
             if (findBindPairForOutStream(i) < 0) {
-                return unpackSizes[i];
+                return unpackSizes.at(i);
             }
         }
         return 0;
@@ -285,7 +297,7 @@
     {
         int result = 0;
         for (int i = 0; i < folderInfos.size(); i++) {
-            result += folderInfos[i]->numOutStreams;
+            result += folderInfos.at(i)->numOutStreams;
         }
         return result;
     }
@@ -294,7 +306,7 @@
     {
         quint32 streamIndex = 0;
         for (quint32 i = 0; i < coderIndex; i++) {
-            streamIndex += folderInfos[i]->numInStreams;
+            streamIndex += folderInfos.at(i)->numInStreams;
         }
         return streamIndex;
     }
@@ -303,7 +315,7 @@
     {
         quint32 streamIndex = 0;
         for (quint32 i = 0; i < coderIndex; i++) {
-            streamIndex += folderInfos[i]->numOutStreams;
+            streamIndex += folderInfos.at(i)->numOutStreams;
         }
         return streamIndex;
     }
@@ -365,7 +377,7 @@
     bool isEncrypted() const
     {
         for (int i = folderInfos.size() - 1; i >= 0; i--) {
-            if (folderInfos[i]->methodID == k_AES) {
+            if (folderInfos.at(i)->methodID == k_AES) {
                 return true;
             }
         }
@@ -399,6 +411,12 @@
     {
     }
 
+    ~K7ZipPrivate()
+    {
+        qDeleteAll(folders);
+        qDeleteAll(fileInfos);
+    }
+
     K7Zip *q;
 
     QVector<bool> packCRCsDefined;
@@ -437,14 +455,16 @@
     QByteArray header;
     QByteArray outData; // Store data in this buffer before compress and write 
in archive.
     K7ZipFileEntry *m_currentFile;
-    QList<KArchiveEntry *> m_entryList;
+    QVector<KArchiveEntry *> m_entryList;
 
     void clear()
     {
         packCRCsDefined.clear();
         packCRCs.clear();
         numUnpackStreamsInFolders.clear();
+        qDeleteAll(folders);
         folders.clear();
+        qDeleteAll(fileInfos);
         fileInfos.clear();
         cTimesDefined.clear();
         cTimes.clear();
@@ -497,10 +517,10 @@
     void writeUInt64(quint64 value);
     void writeHashDigests(const QVector<bool> &digestsDefined, const 
QVector<quint32> &digests);
     void writeAlignedBoolHeader(const QVector<bool> &v, int numDefined, int 
type, unsigned itemSize);
-    void writeUInt64DefVector(const QVector<quint64> &v, const QVector<bool> 
defined, int type);
+    void writeUInt64DefVector(const QVector<quint64> &v, const QVector<bool> 
&defined, int type);
     void writeFolder(const Folder *folder);
     void writePackInfo(quint64 dataOffset, QVector<quint64> &packedSizes, 
QVector<bool> &packedCRCsDefined, QVector<quint32> &packedCRCs);
-    void writeUnpackInfo(QVector<Folder *> &folderItems);
+    void writeUnpackInfo(const QVector<Folder *> &folderItems);
     void writeSubStreamsInfo(const QVector<quint64> &unpackSizes, const 
QVector<bool> &digestsDefined, const QVector<quint32> &digests);
     void writeHeader(quint64 &headerOffset);
     void writeSignature();
@@ -882,6 +902,7 @@
     }
 
     int numFolders = readNumber();
+    qDeleteAll(folders);
     folders.clear();
     int external = readByte();
     switch (external) {
@@ -910,7 +931,7 @@
     }
 
     for (int i = 0; i < numFolders; ++i) {
-        Folder *folder = folders[i];
+        Folder *folder = folders.at(i);
         int numOutStreams = folder->getNumOutStreams();
         for (int j = 0; j < numOutStreams; ++j) {
             folder->unpackSizes.append(readNumber());
@@ -927,7 +948,7 @@
             QVector<quint32> crcs;
             readHashDigests(numFolders, crcsDefined, crcs);
             for (int i = 0; i < numFolders; i++) {
-                Folder *folder = folders[i];
+                Folder *folder = folders.at(i);
                 folder->unpackCRCDefined = crcsDefined[i];
                 folder->unpackCRC = crcs[i];
             }
@@ -971,7 +992,7 @@
     }
 
     for (int i = 0; i < numUnpackStreamsInFolders.size(); i++) {
-        quint64 numSubstreams = numUnpackStreamsInFolders[i];
+        quint64 numSubstreams = numUnpackStreamsInFolders.at(i);
         if (numSubstreams == 0) {
             continue;
         }
@@ -983,7 +1004,7 @@
                 sum += size;
             }
         }
-        unpackSizes.append(folders[i]->getUnpackSize() - sum);
+        unpackSizes.append(folders.at(i)->getUnpackSize() - sum);
     }
 
     if (type == kSize) {
@@ -993,8 +1014,8 @@
     int numDigests = 0;
     int numDigestsTotal = 0;
     for (int i = 0; i < folders.size(); i++) {
-        quint64 numSubstreams = numUnpackStreamsInFolders[i];
-        if (numSubstreams != 1 || !folders[i]->unpackCRCDefined) {
+        quint64 numSubstreams = numUnpackStreamsInFolders.at(i);
+        if (numSubstreams != 1 || !folders.at(i)->unpackCRCDefined) {
             numDigests += numSubstreams;
         }
         numDigestsTotal += numSubstreams;
@@ -1007,8 +1028,8 @@
             readHashDigests(numDigests, digestsDefined2, digests2);
             int digestIndex = 0;
             for (int i = 0; i < folders.size(); i++) {
-                quint64 numSubstreams = numUnpackStreamsInFolders[i];
-                const Folder *folder = folders[i];
+                quint64 numSubstreams = numUnpackStreamsInFolders.at(i);
+                const Folder *folder = folders.at(i);
                 if (numSubstreams == 1 && folder->unpackCRCDefined) {
                     digestsDefined.append(true);
                     digests.append(folder->unpackCRC);
@@ -1183,7 +1204,7 @@
     QVector<quint32> outStreams;
     quint32 outStreamIndex = 0;
     for (int i = 0; i < folder->folderInfos.size(); i++) {
-        const Folder::FolderInfo *coderInfo = folder->folderInfos[i];
+        const Folder::FolderInfo *coderInfo = folder->folderInfos.at(i);
 
         for (int j = 0; j < coderInfo->numOutStreams; j++, outStreamIndex++) {
             if (folder->findBindPairForOutStream(outStreamIndex) < 0) {
@@ -1461,7 +1482,7 @@
 
     quint64 startPos = 32 + packPos;
     for (int i = 0; i < folders.size(); i++) {
-        const Folder *folder = folders[i];
+        const Folder *folder = folders.at(i);
         quint64 unpackSize64 = folder->getUnpackSize();;
         size_t unpackSize = (size_t)unpackSize64;
         if (unpackSize != unpackSize64) {
@@ -1495,6 +1516,8 @@
 
         QVector<int> seqInStreams;
         QVector<quint32> coderIndexes;
+        seqInStreams.reserve(mainCoder->numInStreams);
+        coderIndexes.reserve(mainCoder->numInStreams);
         for (int j = 0; j < (int)mainCoder->numInStreams; j++) {
             int seqInStream;
             quint32 coderIndex;
@@ -1504,6 +1527,7 @@
         }
 
         QVector<int> seqOutStreams;
+        seqOutStreams.reserve(mainCoder->numOutStreams);
         for (int j = 0; j < (int)mainCoder->numOutStreams; j++) {
             int seqOutStream;
             getOutStream(folder, startOutIndex + j, seqOutStream);
@@ -1671,9 +1695,9 @@
 
 void K7Zip::K7ZipPrivate::createItemsFromEntities(const KArchiveDirectory 
*dir, const QString &path, QByteArray &data)
 {
-    QStringList l = dir->entries();
-    QStringList::ConstIterator it = l.constBegin();
-    for (; it != l.constEnd(); ++it) {
+    const QStringList l = dir->entries();
+    QStringList::ConstIterator it = l.begin();
+    for (; it != l.end(); ++it) {
         const KArchiveEntry *entry = dir->entry((*it));
 
         FileInfo *fileInfo = new FileInfo;
@@ -1792,7 +1816,7 @@
     writeByte(0);
 }
 
-void K7Zip::K7ZipPrivate::writeUInt64DefVector(const QVector<quint64> &v, 
const QVector<bool> defined, int type)
+void K7Zip::K7ZipPrivate::writeUInt64DefVector(const QVector<quint64> &v, 
const QVector<bool> &defined, int type)
 {
     int numDefined = 0;
 
@@ -1869,7 +1893,7 @@
 {
     writeNumber(folder->folderInfos.size());
     for (int i = 0; i < folder->folderInfos.size(); i++) {
-        const Folder::FolderInfo *info = folder->folderInfos[i];
+        const Folder::FolderInfo *info = folder->folderInfos.at(i);
         {
             size_t propsSize = info->properties.size();
 
@@ -1925,7 +1949,7 @@
     }
 }
 
-void K7Zip::K7ZipPrivate::writeUnpackInfo(QVector<Folder *> &folderItems)
+void K7Zip::K7ZipPrivate::writeUnpackInfo(const QVector<Folder *> &folderItems)
 {
     if (folderItems.isEmpty()) {
         return;
@@ -1947,12 +1971,14 @@
     for (i = 0; i < folderItems.size(); i++) {
         const Folder *folder = folderItems[i];
         for (int j = 0; j < folder->unpackSizes.size(); j++) {
-            writeNumber(folder->unpackSizes[j]);
+            writeNumber(folder->unpackSizes.at(j));
         }
     }
 
     QVector<bool> unpackCRCsDefined;
     QVector<quint32> unpackCRCs;
+    unpackCRCsDefined.reserve(folderItems.size());
+    unpackCRCs.reserve(folderItems.size());
     for (i = 0; i < folderItems.size(); i++) {
         const Folder *folder = folderItems[i];
         unpackCRCsDefined.append(folder->unpackCRCDefined);
@@ -1971,10 +1997,10 @@
     writeByte(kSubStreamsInfo);
 
     for (int i = 0; i < numUnpackStreamsInFolders.size(); i++) {
-        if (numUnpackStreamsInFolders[i] != 1) {
+        if (numUnpackStreamsInFolders.at(i) != 1) {
             writeByte(kNumUnpackStream);
             for (int j = 0; j < numUnpackStreamsInFolders.size(); j++) {
-                writeNumber(numUnpackStreamsInFolders[j]);
+                writeNumber(numUnpackStreamsInFolders.at(j));
             }
             break;
         }
@@ -1983,8 +2009,8 @@
     bool needFlag = true;
     int index = 0;
     for (int i = 0; i < numUnpackStreamsInFolders.size(); i++) {
-        for (quint32 j = 0; j < numUnpackStreamsInFolders[i]; j++) {
-            if (j + 1 != numUnpackStreamsInFolders[i]) {
+        for (quint32 j = 0; j < numUnpackStreamsInFolders.at(i); j++) {
+            if (j + 1 != numUnpackStreamsInFolders.at(i)) {
                 if (needFlag) {
                     writeByte(kSize);
                 }
@@ -2000,8 +2026,8 @@
 
     int digestIndex = 0;
     for (int i = 0; i < folders.size(); i++) {
-        int numSubStreams = (int)numUnpackStreamsInFolders[i];
-        if (numSubStreams == 1 && folders[i]->unpackCRCDefined) {
+        int numSubStreams = (int)numUnpackStreamsInFolders.at(i);
+        if (numSubStreams == 1 && folders.at(i)->unpackCRCDefined) {
             digestIndex++;
         } else {
             for (int j = 0; j < numSubStreams; j++, digestIndex++) {
@@ -2094,7 +2120,7 @@
         QVector<bool> digestsDefined;
         QVector<quint32> digests;
         for (int i = 0; i < fileInfos.size(); i++) {
-            const FileInfo *file = fileInfos[i];
+            const FileInfo *file = fileInfos.at(i);
             if (!file->hasStream) {
                 continue;
             }
@@ -2120,7 +2146,7 @@
         QVector<bool> emptyStreamVector;
         int numEmptyStreams = 0;
         for (int i = 0; i < fileInfos.size(); i++) {
-            if (fileInfos[i]->hasStream) {
+            if (fileInfos.at(i)->hasStream) {
                 emptyStreamVector.append(false);
             } else {
                 emptyStreamVector.append(true);
@@ -2136,7 +2162,7 @@
             QVector<bool> emptyFileVector, antiVector;
             int numEmptyFiles = 0, numAntiItems = 0;
             for (int i = 0; i < fileInfos.size(); i++) {
-                const FileInfo *file = fileInfos[i];
+                const FileInfo *file = fileInfos.at(i);
                 if (!file->hasStream) {
                     emptyFileVector.append(!file->isDir);
                     if (!file->isDir) {
@@ -2170,7 +2196,7 @@
         int numDefined = 0;
         size_t namesDataSize = 0;
         for (int i = 0; i < fileInfos.size(); i++) {
-            const QString &name = fileInfos[i]->path;
+            const QString &name = fileInfos.at(i)->path;
             if (!name.isEmpty()) {
                 numDefined++;
                 namesDataSize += (name.length() + 1) * 2;
@@ -2185,7 +2211,7 @@
             writeNumber(namesDataSize);
             writeByte(0);
             for (int i = 0; i < fileInfos.size(); i++) {
-                const QString &name = fileInfos[i]->path;
+                const QString &name = fileInfos.at(i)->path;
                 for (int t = 0; t < name.length(); t++) {
                     wchar_t c = name[t].toLatin1();
                     writeByte((unsigned char)c);
@@ -2206,8 +2232,9 @@
         /* ---------- Write Attrib ---------- */
         QVector<bool> boolVector;
         int numDefined = 0;
+        boolVector.reserve(fileInfos.size());
         for (int i = 0; i < fileInfos.size(); i++) {
-            bool defined = fileInfos[i]->attribDefined;
+            bool defined = fileInfos.at(i)->attribDefined;
             boolVector.append(defined);
             if (defined) {
                 numDefined++;
@@ -2217,7 +2244,7 @@
         if (numDefined > 0) {
             writeAlignedBoolHeader(boolVector, numDefined, kAttributes, 4);
             for (int i = 0; i < fileInfos.size(); i++) {
-                const FileInfo *file = fileInfos[i];
+                const FileInfo *file = fileInfos.at(i);
                 if (file->attribDefined) {
                     writeUInt32(file->attributes);
                 }
@@ -2397,7 +2424,7 @@
         type = d->readByte();
     } else {
         for (int i = 0; i < d->folders.size(); ++i) {
-            Folder *folder = d->folders[i];
+            Folder *folder = d->folders.at(i);
             d->unpackSizes.append(folder->getUnpackSize());
             d->digestsDefined.append(folder->unpackCRCDefined);
             d->digests.append(folder->unpackCRC);
@@ -2489,7 +2516,7 @@
                 QString name;
                 for (int i = 0; i < numFiles; i++) {
                     name = d->readString();
-                    d->fileInfos[i]->path = name;
+                    d->fileInfos.at(i)->path = name;
                 }
                 break;
             }
@@ -2507,7 +2534,7 @@
                 }
 
                 for (int i = 0; i < numFiles; i++) {
-                    FileInfo *fileInfo = d->fileInfos[i];
+                    FileInfo *fileInfo = d->fileInfos.at(i);
                     fileInfo->attribDefined = attributesAreDefined[i];
                     if (fileInfo->attribDefined) {
                         fileInfo->attributes = d->readUInt32();
@@ -2558,20 +2585,14 @@
     int numAntiItems = 0;
 
     if (emptyStreamVector.isEmpty()) {
-        for (int i = 0; i < numFiles; ++i) {
-            emptyStreamVector.append(false);
-        }
+        emptyStreamVector.fill(false, numFiles);
     }
 
     if (antiFileVector.isEmpty()) {
-        for (int i = 0; i < numEmptyStreams; i++) {
-            antiFileVector.append(false);
-        }
+        antiFileVector.fill(false, numEmptyStreams);
     }
     if (emptyFileVector.isEmpty()) {
-        for (int i = 0; i < numEmptyStreams; i++) {
-            emptyFileVector.append(false);
-        }
+        emptyFileVector.fill(false, numEmptyStreams);
     }
 
     for (int i = 0; i < numEmptyStreams; i++) {
@@ -2584,7 +2605,7 @@
 
     int oldPos = 0;
     for (int i = 0; i < numFiles; i++) {
-        FileInfo *fileInfo = d->fileInfos[i];
+        FileInfo *fileInfo = d->fileInfos.at(i);
         bool isAnti;
         fileInfo->hasStream = !emptyStreamVector[i];
         if (fileInfo->hasStream) {
@@ -2605,45 +2626,6 @@
             d->isAnti.append(isAnti);
         }
 
-        QString attr;
-        if ((fileInfo->attributes & FILE_ATTRIBUTE_DIRECTORY) != 0 || 
fileInfo->isDir) {
-            attr += QLatin1String("D");
-        }
-        if ((fileInfo->attributes & FILE_ATTRIBUTE_READONLY) != 0) {
-            attr += QLatin1String("R");
-        }
-        if ((fileInfo->attributes & FILE_ATTRIBUTE_HIDDEN) != 0) {
-            attr += QLatin1String("H");
-        }
-        if ((fileInfo->attributes & FILE_ATTRIBUTE_SYSTEM) != 0) {
-            attr += QLatin1String("S");
-        }
-        if ((fileInfo->attributes & FILE_ATTRIBUTE_ARCHIVE) != 0) {
-            attr += QLatin1String("A");
-        }
-
-        quint64 packSize = 0;
-        for (int j = 0; j < d->packSizes.size(); j++) {
-            packSize += d->packSizes[j];
-        }
-        //unsigned short st_mode = fileInfo->attributes >> 16;
-        QString method;
-        for (int w = 0; w < d->folders.size(); ++w) {
-            for (int g = 0; g < d->folders[w]->folderInfos.size(); ++g) {
-                Folder::FolderInfo *info = d->folders[w]->folderInfos[g];
-                switch (info->methodID) {
-                case k_LZMA:
-                    method = QLatin1String("LZMA:16");
-                    break;
-                case k_LZMA2:
-                    method = QLatin1String("LZMA2");
-                    break;
-                case k_AES:
-                    break;
-                }
-            }
-        }
-
         int access;
         bool symlink = false;
         if (fileInfo->attributes & FILE_ATTRIBUTE_UNIX_EXTENSION) {
@@ -2791,7 +2773,7 @@
 
     int numUnpackStream = 0;
     for (int i = 0; i < d->fileInfos.size(); ++i) {
-        if (d->fileInfos[i]->hasStream) {
+        if (d->fileInfos.at(i)->hasStream) {
             numUnpackStream++;
         }
     }
@@ -2820,8 +2802,9 @@
         d->writeUnpackInfo(folders);
         d->writeByte(kEnd);
         for (int i = 0; i < packSizes.size(); i++) {
-            headerOffset += packSizes[i];
+            headerOffset += packSizes.at(i);
         }
+        qDeleteAll(folders);
     }
     // end encode header
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/karchive.cpp 
new/karchive-5.16.0/src/karchive.cpp
--- old/karchive-5.15.0/src/karchive.cpp        2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/src/karchive.cpp        2015-11-09 08:55:01.000000000 
+0100
@@ -226,7 +226,7 @@
         int len = readlink(encodedFileName.data(), s.data(), s.size() - 1);
         if (len >= 0) {
             s[len] = '\0';
-            symLinkTarget = QFile::decodeName(s);
+            symLinkTarget = QFile::decodeName(s.constData());
         }
 #endif
         if (symLinkTarget.isEmpty()) { // Mac or Windows
@@ -410,7 +410,7 @@
         QString username = ::getCurrentUserName();
         QString groupname = ::getCurrentGroupName();
 
-        d->rootDir = new KArchiveDirectory(this, QLatin1String("/"), 
(int)(0777 + S_IFDIR), QDateTime(), username, groupname, QString());
+        d->rootDir = new KArchiveDirectory(this, QStringLiteral("/"), 
(int)(0777 + S_IFDIR), QDateTime(), username, groupname, QString());
     }
     return d->rootDir;
 }
@@ -864,8 +864,8 @@
                 QString linkName = curDirName + QLatin1Char('/') + 
curEntry->name();
                 // To create a valid link on Windows, linkName must have a 
.lnk file extension.
 #ifdef Q_OS_WIN
-                if (!linkName.endsWith(QStringLiteral(".lnk"))) {
-                    linkName += QStringLiteral(".lnk");
+                if (!linkName.endsWith(QLatin1String(".lnk"))) {
+                    linkName += QLatin1String(".lnk");
                 }
 #endif
                 QFile symLinkTarget(curEntry->symLinkTarget());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/kfilterdev.cpp 
new/karchive-5.16.0/src/kfilterdev.cpp
--- old/karchive-5.15.0/src/kfilterdev.cpp      2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/src/kfilterdev.cpp      2015-11-09 08:55:01.000000000 
+0100
@@ -73,20 +73,20 @@
     QMimeDatabase db;
     const QMimeType mime = db.mimeTypeForName(mimeType);
     if (mime.isValid()) {
-        if (mime.inherits(QString::fromLatin1("application/x-gzip"))) {
+        if (mime.inherits(QStringLiteral("application/x-gzip"))) {
             return KCompressionDevice::GZip;
         }
 #if HAVE_BZIP2_SUPPORT
-        if (mime.inherits(QString::fromLatin1("application/x-bzip"))) {
+        if (mime.inherits(QStringLiteral("application/x-bzip"))) {
             return KCompressionDevice::BZip2;
         }
 #endif
 #if HAVE_XZ_SUPPORT
-        if (mime.inherits(QString::fromLatin1("application/x-lzma"))) {
+        if (mime.inherits(QStringLiteral("application/x-lzma"))) {
             return KCompressionDevice::Xz;
         }
 
-        if (mime.inherits(QString::fromLatin1("application/x-xz"))) {
+        if (mime.inherits(QStringLiteral("application/x-xz"))) {
             return KCompressionDevice::Xz;
         }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/kfilterdev.h 
new/karchive-5.16.0/src/kfilterdev.h
--- old/karchive-5.15.0/src/kfilterdev.h        2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/src/kfilterdev.h        2015-11-09 08:55:01.000000000 
+0100
@@ -112,7 +112,7 @@
 #endif
 
     /**
-     * @deprecated Use KCompressionDevicea
+     * @deprecated Use KCompressionDevice
      *
      * Use:
      * KCompressionDevice::CompressionType type = 
KFilterDev::compressionTypeForMimeType(mimeType);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/ktar.cpp 
new/karchive-5.16.0/src/ktar.cpp
--- old/karchive-5.15.0/src/ktar.cpp    2015-10-03 12:11:51.000000000 +0200
+++ new/karchive-5.16.0/src/ktar.cpp    2015-11-09 08:55:01.000000000 +0100
@@ -41,7 +41,6 @@
 static const char application_bzip[] = "application/x-bzip";
 static const char application_lzma[] = "application/x-lzma";
 static const char application_xz[] = "application/x-xz";
-static const char application_zip[] = "application/zip";
 
 class KTar::KTarPrivate
 {
@@ -109,16 +108,16 @@
 
         //qDebug() << mode << mime->name();
 
-        if (mime.inherits(QString::fromLatin1("application/x-compressed-tar")) 
|| mime.inherits(QString::fromLatin1(application_gzip))) {
+        if (mime.inherits(QStringLiteral("application/x-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_gzip))) {
             // gzipped tar file (with possibly invalid file name), ask for 
gzip filter
             d->mimetype = QString::fromLatin1(application_gzip);
-        } else if 
(mime.inherits(QString::fromLatin1("application/x-bzip-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_bzip))) {
+        } else if 
(mime.inherits(QStringLiteral("application/x-bzip-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_bzip))) {
             // bzipped2 tar file (with possibly invalid file name), ask for 
bz2 filter
             d->mimetype = QString::fromLatin1(application_bzip);
-        } else if 
(mime.inherits(QString::fromLatin1("application/x-lzma-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_lzma))) {
+        } else if 
(mime.inherits(QStringLiteral("application/x-lzma-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_lzma))) {
             // lzma compressed tar file (with possibly invalid file name), ask 
for xz filter
             d->mimetype = QString::fromLatin1(application_lzma);
-        } else if 
(mime.inherits(QString::fromLatin1("application/x-xz-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_xz))) {
+        } else if 
(mime.inherits(QStringLiteral("application/x-xz-compressed-tar")) || 
mime.inherits(QString::fromLatin1(application_xz))) {
             // xz compressed tar file (with possibly invalid name), ask for xz 
filter
             d->mimetype = QString::fromLatin1(application_xz);
         }
@@ -253,6 +252,7 @@
             return false;
         }
     }
+    longlink.truncate(qstrlen(longlink.constData()));
     return true;
 }
 
@@ -273,10 +273,10 @@
             readLonglink(buffer, longlink);
             switch (typeflag) {
             case 'L':
-                name = QFile::decodeName(longlink);
+                name = QFile::decodeName(longlink.constData());
                 break;
             case 'K':
-                symlink = QFile::decodeName(longlink);
+                symlink = QFile::decodeName(longlink.constData());
                 break;
             }/*end switch*/
         } else {
@@ -289,10 +289,11 @@
         // there are names that are exactly 100 bytes long
         // and neither longlink nor \0 terminated (bug:101472)
     {
-        name = QFile::decodeName(QByteArray(buffer, 100));
+        name = QFile::decodeName(QByteArray(buffer, qstrnlen(buffer, 100)));
     }
     if (symlink.isEmpty()) {
-        symlink = QFile::decodeName(QByteArray(buffer + 0x9d /*?*/, 100));
+        char *symlinkBuffer = buffer + 0x9d /*?*/;
+        symlink = QFile::decodeName(QByteArray(symlinkBuffer, 
qstrnlen(symlinkBuffer, 100)));
     }
 
     return 0x200;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/src/kzip.cpp 
new/karchive-5.16.0/src/kzip.cpp
--- old/karchive-5.15.0/src/kzip.cpp    2015-10-03 12:11:51.000000000 +0200
+++ new/karchive-5.16.0/src/kzip.cpp    2015-11-09 08:55:01.000000000 +0100
@@ -1181,7 +1181,7 @@
         return true;
     }
 
-    KCompressionDevice::CompressionType type = 
KFilterDev::compressionTypeForMimeType(QString::fromLatin1("application/x-gzip"));
+    KCompressionDevice::CompressionType type = 
KFilterDev::compressionTypeForMimeType(QStringLiteral("application/x-gzip"));
     d->m_currentDev = new KCompressionDevice(device(), false, type);
     Q_ASSERT(d->m_currentDev);
     if (!d->m_currentDev) {
@@ -1406,7 +1406,7 @@
 
     if (encoding() == 8) {
         // On top of that, create a device that uncompresses the zlib data
-        KCompressionDevice::CompressionType type = 
KFilterDev::compressionTypeForMimeType(QString::fromLatin1("application/x-gzip"));
+        KCompressionDevice::CompressionType type = 
KFilterDev::compressionTypeForMimeType(QStringLiteral("application/x-gzip"));
         KCompressionDevice *filterDev = new KCompressionDevice(limitedDev, 
true, type);
 
         if (!filterDev) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/tests/k7ziptest.cpp 
new/karchive-5.16.0/tests/k7ziptest.cpp
--- old/karchive-5.15.0/tests/k7ziptest.cpp     2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/tests/k7ziptest.cpp     2015-11-09 08:55:01.000000000 
+0100
@@ -27,7 +27,7 @@
     QStringList::ConstIterator it = l.constBegin();
     for (; it != l.constEnd(); ++it) {
         const KArchiveEntry *entry = dir->entry((*it));
-        printf("mode=%07o %s %s %s %s%s %lld isdir=%d\n", 
entry->permissions(), entry->date().toString("yyyy-MM-dd 
hh:mm:ss").toLatin1().constData(),
+        printf("mode=%07o %s %s %s %s%s %lld isdir=%d\n", 
entry->permissions(), entry->date().toString(QStringLiteral("yyyy-MM-dd 
hh:mm:ss")).toLatin1().constData(),
                entry->user().toLatin1().constData(), 
entry->group().toLatin1().constData(), path.toLatin1().constData(), 
(*it).toLatin1().constData(),
                entry->isFile() ? static_cast<const KArchiveFile 
*>(entry)->size() : 0,
                entry->isDirectory());
@@ -71,7 +71,7 @@
     const KArchiveDirectory *dir = k7z.directory();
 
     //printf("calling recursive_print\n");
-    recursive_print(dir, "");
+    recursive_print(dir, QLatin1String(""));
     //printf("recursive_print called\n");
 
     k7z.close();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/tests/krcctest.cpp 
new/karchive-5.16.0/tests/krcctest.cpp
--- old/karchive-5.15.0/tests/krcctest.cpp      2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/tests/krcctest.cpp      2015-11-09 08:55:01.000000000 
+0100
@@ -60,7 +60,7 @@
     const KArchiveDirectory *dir = rcc.directory();
 
     //printf("calling recursive_print\n");
-    recursive_print(dir, "");
+    recursive_print(dir, QLatin1String(""));
     //printf("recursive_print called\n");
 
     rcc.close();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/tests/ktartest.cpp 
new/karchive-5.16.0/tests/ktartest.cpp
--- old/karchive-5.15.0/tests/ktartest.cpp      2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/tests/ktartest.cpp      2015-11-09 08:55:01.000000000 
+0100
@@ -60,7 +60,7 @@
     const KArchiveDirectory *dir = tar.directory();
 
     //printf("calling recursive_print\n");
-    recursive_print(dir, "");
+    recursive_print(dir, QLatin1String(""));
     //printf("recursive_print called\n");
 
     tar.close();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/karchive-5.15.0/tests/kziptest.cpp 
new/karchive-5.16.0/tests/kziptest.cpp
--- old/karchive-5.15.0/tests/kziptest.cpp      2015-10-03 12:11:51.000000000 
+0200
+++ new/karchive-5.16.0/tests/kziptest.cpp      2015-11-09 08:55:01.000000000 
+0100
@@ -33,7 +33,7 @@
                entry->isDirectory() ? 0 : (static_cast<const KArchiveFile 
*>(entry))->size(),
                entry->isDirectory() ? 0 : (static_cast<const KArchiveFile 
*>(entry))->position(),
                entry->isDirectory(),
-               entry->symLinkTarget().isEmpty() ? "" : QString(" symlink: 
%1").arg(entry->symLinkTarget()).toLatin1().constData());
+               entry->symLinkTarget().isEmpty() ? "" : QStringLiteral(" 
symlink: %1").arg(entry->symLinkTarget()).toLatin1().constData());
 
         //    if (!entry->isDirectory()) printf("%d", (static_cast<const 
KArchiveFile *>(entry))->size());
         printf("\n");
@@ -119,13 +119,13 @@
     }
 
     const QByteArray data = "This is the data for the main file";
-    bool writeOk = zip.writeFile("maindoc.txt", data);
+    bool writeOk = zip.writeFile(QStringLiteral("maindoc.txt"), data);
     if (!writeOk) {
         qWarning() << "Write error (main file)";
         return 1;
     }
     const QByteArray data2 = "This is the data for the other file";
-    writeOk = zip.writeFile("subdir/other.txt", data2);
+    writeOk = zip.writeFile(QStringLiteral("subdir/other.txt"), data2);
     if (!writeOk) {
         qWarning() << "Write error (other file)";
         return 1;
@@ -146,7 +146,7 @@
         return 1;
     }
     const KArchiveDirectory *dir = zip.directory();
-    const KArchiveEntry *mainEntry = dir->entry("maindoc.txt");
+    const KArchiveEntry *mainEntry = dir->entry(QStringLiteral("maindoc.txt"));
     Q_ASSERT(mainEntry && mainEntry->isFile());
     const KArchiveFile *mainFile = static_cast<const KArchiveFile 
*>(mainEntry);
     qDebug() << "maindoc.txt:" << mainFile->data();
@@ -204,7 +204,7 @@
     }
     const KArchiveDirectory *dir1 = zip1.directory();
 
-    recursive_transfer(dir1, "", &zip2);
+    recursive_transfer(dir1, QLatin1String(""), &zip2);
 
     zip1.close();
     zip2.close();
@@ -271,31 +271,31 @@
     }
     QCoreApplication app(argc, argv);
     QString command = argv[1];
-    if (command == "list") {
+    if (command == QLatin1String("list")) {
         return doList(QFile::decodeName(argv[2]));
-    } else if (command == "print-all") {
+    } else if (command == QLatin1String("print-all")) {
         return doPrintAll(QFile::decodeName(argv[2]));
-    } else if (command == "print") {
+    } else if (command == QLatin1String("print")) {
         if (argc != 4) {
             printf("usage: kziptest print archivename filename");
             return 1;
         }
         return doPrint(QFile::decodeName(argv[2]), argv[3]);
-    } else if (command == "save") {
+    } else if (command == QLatin1String("save")) {
         return doSave(QFile::decodeName(argv[2]));
-    } else if (command == "load") {
+    } else if (command == QLatin1String("load")) {
         return doLoad(QFile::decodeName(argv[2]));
-    } else if (command == "write") {
+    } else if (command == QLatin1String("write")) {
         return doCompress(QFile::decodeName(argv[2]));
-    } else if (command == "read") {
+    } else if (command == QLatin1String("read")) {
         return doUncompress(QFile::decodeName(argv[2]));
-    } else if (command == "update") {
+    } else if (command == QLatin1String("update")) {
         if (argc != 4) {
             printf("usage: kziptest update archivename filename");
             return 1;
         }
         return doUpdate(QFile::decodeName(argv[2]), 
QFile::decodeName(argv[3]));
-    } else if (command == "transfer") {
+    } else if (command == QLatin1String("transfer")) {
         if (argc != 4) {
             printf("usage: kziptest transfer sourcefile destfile");
             return 1;


Reply via email to