From 0abd207052a23759a64ebbabbe46b6c2cdf07a5f Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 17 Aug 2014 20:44:39 +0200 Subject: QZip*: don't hold QZipReader::FileInfo in QList FileInfo is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: I772177c5ac544a5fecce2368f628148308ef260f Reviewed-by: Konstantin Ritt Reviewed-by: Thiago Macieira --- src/gui/text/qzip.cpp | 8 ++++---- src/gui/text/qzipreader_p.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/gui/text') diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp index 00a1aa397c..e25ff5a73c 100644 --- a/src/gui/text/qzip.cpp +++ b/src/gui/text/qzip.cpp @@ -430,7 +430,7 @@ public: QIODevice *device; bool ownDevice; bool dirtyFileTree; - QList fileHeaders; + QVector fileHeaders; QByteArray comment; uint start_of_directory; }; @@ -889,10 +889,10 @@ bool QZipReader::exists() const /*! Returns the list of files the archive contains. */ -QList QZipReader::fileInfoList() const +QVector QZipReader::fileInfoList() const { d->scanFiles(); - QList files; + QVector files; const int numFileHeaders = d->fileHeaders.size(); files.reserve(numFileHeaders); for (int i = 0; i < numFileHeaders; ++i) { @@ -1022,7 +1022,7 @@ bool QZipReader::extractAll(const QString &destinationDir) const QDir baseDir(destinationDir); // create directories first - QList allFiles = fileInfoList(); + const QVector allFiles = fileInfoList(); foreach (const FileInfo &fi, allFiles) { const QString absPath = destinationDir + QDir::separator() + fi.filePath; if (fi.isDir) { diff --git a/src/gui/text/qzipreader_p.h b/src/gui/text/qzipreader_p.h index e4026285b2..7f26bfb184 100644 --- a/src/gui/text/qzipreader_p.h +++ b/src/gui/text/qzipreader_p.h @@ -88,7 +88,7 @@ public: QDateTime lastModified; }; - QList fileInfoList() const; + QVector fileInfoList() const; int count() const; FileInfo entryInfoAt(int index) const; -- cgit v1.2.3