From b39b3551b72d9e0d894d0f2eee12e06fa46dfb0c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 31 Dec 2024 16:34:13 -0300 Subject: [PATCH] QStandardPaths: use qTokenizer Avoids allocating memory for the array. Change-Id: I425235b948609e5f0ffcfffd0f93375a224e5bcb Reviewed-by: Volker Hilsheimer (cherry picked from commit 403a47cfd571c9954e91234084c6994901939326) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/io/qstandardpaths.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/corelib/io/qstandardpaths.cpp b/src/corelib/io/qstandardpaths.cpp index c0c676d04f2..be9ac52899a 100644 --- a/src/corelib/io/qstandardpaths.cpp +++ b/src/corelib/io/qstandardpaths.cpp @@ -522,11 +522,10 @@ QString QStandardPaths::findExecutable(const QString &executableName, const QStr } // Remove trailing slashes, which occur on Windows. - const QStringList rawPaths = pEnv.split( - QDir::listSeparator(), Qt::SkipEmptyParts); - searchPaths.reserve(rawPaths.size()); - for (const QString &rawPath : rawPaths) { - QString cleanPath = QDir::cleanPath(rawPath); + searchPaths.reserve(pEnv.count(QDir::listSeparator())); + auto tokenizer = qTokenize(pEnv, QDir::listSeparator(), Qt::SkipEmptyParts); + for (QStringView rawPath : tokenizer) { + QString cleanPath = QDir::cleanPath(rawPath.toString()); if (cleanPath.size() > 1 && cleanPath.endsWith(u'/')) cleanPath.truncate(cleanPath.size() - 1); searchPaths.push_back(cleanPath);