summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2020-05-02 23:03:39 +0200
committerMarc Mutz <marc.mutz@kdab.com>2020-05-04 08:53:52 +0200
commitea7d85457d30e915ad470919d2e74867cba9cad8 (patch)
tree279d643a5a163332a3fd25f3bceb2a65b9cac15c
parent7f02abd301b3a62f2e3d36fc5b2802c304eb506b (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.cpp8
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);
}