diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-05-02 23:03:39 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2020-05-04 08:53:52 +0200 |
commit | ea7d85457d30e915ad470919d2e74867cba9cad8 (patch) | |
tree | 279d643a5a163332a3fd25f3bceb2a65b9cac15c | |
parent | 7f02abd301b3a62f2e3d36fc5b2802c304eb506b (diff) |
QFileSystemEngine: port a local QSet to QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also
transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or
at least reduce, memory allocations.
Change-Id: Ife8e09b4a54060ef52c9aac43e400736ea398c29
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/io/qfilesystemengine.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/io/qfilesystemengine.cpp b/src/corelib/io/qfilesystemengine.cpp index 21847c2a7c..bfecc4fe83 100644 --- a/src/corelib/io/qfilesystemengine.cpp +++ b/src/corelib/io/qfilesystemengine.cpp @@ -45,6 +45,7 @@ #ifdef QT_BUILD_CORE_LIB #include <QtCore/private/qresource_p.h> #endif +#include <QtCore/private/qduplicatetracker_p.h> QT_BEGIN_NAMESPACE @@ -64,9 +65,9 @@ QString QFileSystemEngine::slowCanonicalized(const QString &path) QString tmpPath = path; int separatorPos = 0; QSet<QString> nonSymlinks; - QSet<QString> known; + QDuplicateTracker<QString> known; - known.insert(path); + (void)known.hasSeen(path); do { #ifdef Q_OS_WIN if (separatorPos == 0) { @@ -94,9 +95,8 @@ QString QFileSystemEngine::slowCanonicalized(const QString &path) tmpPath = QDir::cleanPath(target); separatorPos = 0; - if (known.contains(tmpPath)) + if (known.hasSeen(tmpPath)) return QString(); - known.insert(tmpPath); } else { nonSymlinks.insert(prefix); } |