diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2014-08-17 20:44:39 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-07-19 10:35:41 +0000 |
commit | 0abd207052a23759a64ebbabbe46b6c2cdf07a5f (patch) | |
tree | 502d6d0ed54df8a4805515caa70c56fbbb66f0e3 /src/gui | |
parent | 78bba7b0029f9c626f0c686339dec9a9bf9466c6 (diff) |
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 <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/text/qzip.cpp | 8 | ||||
-rw-r--r-- | src/gui/text/qzipreader_p.h | 2 |
2 files changed, 5 insertions, 5 deletions
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<FileHeader> fileHeaders; + QVector<FileHeader> 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::FileInfo> QZipReader::fileInfoList() const +QVector<QZipReader::FileInfo> QZipReader::fileInfoList() const { d->scanFiles(); - QList<QZipReader::FileInfo> files; + QVector<FileInfo> 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<FileInfo> allFiles = fileInfoList(); + const QVector<FileInfo> 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<FileInfo> fileInfoList() const; + QVector<FileInfo> fileInfoList() const; int count() const; FileInfo entryInfoAt(int index) const; |