From d5cac0b19bb2a94acae190709783cd5077c3de60 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 9 Nov 2021 09:04:46 -0800 Subject: [PATCH] QFactoryLoader: use QDirIterator instead of QDir This showed up on a benchmark when the number of files in the directory was way too big. Change-Id: I5e52dc5b093c43a3b678fffd16b5ef9a938abc63 Reviewed-by: Edward Welbourne Reviewed-by: Marc Mutz --- src/corelib/plugin/qfactoryloader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp index bb1ebb8b20..8b98d756ef 100644 --- a/src/corelib/plugin/qfactoryloader.cpp +++ b/src/corelib/plugin/qfactoryloader.cpp @@ -51,7 +51,7 @@ #include "qcbormap.h" #include "qcborvalue.h" #include "qcborvalue.h" -#include "qdir.h" +#include "qdiriterator.h" #include "qfileinfo.h" #include "qjsonarray.h" #include "qjsondocument.h" @@ -170,7 +170,7 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path) qCDebug(lcFactoryLoader) << "checking directory path" << path << "..."; - QStringList plugins = QDir(path).entryList( + QDirIterator plugins(path, #if defined(Q_OS_WIN) QStringList(QStringLiteral("*.dll")), #elif defined(Q_OS_ANDROID) @@ -178,8 +178,8 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path) #endif QDir::Files); - for (int j = 0; j < plugins.count(); ++j) { - QString fileName = QDir::cleanPath(path + QLatin1Char('/') + plugins.at(j)); + while (plugins.hasNext()) { + QString fileName = plugins.next(); #ifdef Q_OS_MAC const bool isDebugPlugin = fileName.endsWith(QLatin1String("_debug.dylib")); const bool isDebugLibrary =