From 85d3cc84c75e25ef2e468bf77d1a3f52ca8a1194 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 5 Mar 2014 11:17:10 +0100 Subject: [PATCH] Environment: Don't search the same directory repeatedly Do not search the same directory repeatedly when looking for binaries. Change-Id: I97a722cfa689224cb85cdadfd02e283247f96325 Reviewed-by: Orgad Shaneh Reviewed-by: Daniel Teske --- src/libs/utils/environment.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index c185168da3b..1f6d29a759e 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -31,6 +31,7 @@ #include #include +#include #include class SystemEnvironment : public Utils::Environment @@ -262,7 +263,11 @@ QString Environment::searchInPath(const QString &executable, if (fi.isAbsolute()) return exec; + QSet alreadyChecked; foreach (const QString &dir, additionalDirs) { + if (alreadyChecked.contains(dir)) + continue; + alreadyChecked.insert(dir); QString tmp = searchInDirectory(execs, dir); if (!tmp.isEmpty()) return tmp; @@ -272,6 +277,9 @@ QString Environment::searchInPath(const QString &executable, return QString(); foreach (const QString &p, path()) { + if (alreadyChecked.contains(p)) + continue; + alreadyChecked.insert(p); QString tmp = searchInDirectory(execs, QDir::fromNativeSeparators(p)); if (!tmp.isEmpty()) return tmp;