From c63494217d0e463f26cd7b55464f50cf6909437a Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 6 Jun 2017 17:45:28 +0200 Subject: [PATCH] fix infinite loop on environment modify() Task-number: QTCREATORBUG-18335 Change-Id: I9d92f4e85a86a7b498e80d206c5b9ef2d36a17f3 Reviewed-by: Tobias Hunger Reviewed-by: Eike Ziller --- src/libs/utils/environment.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 8808a570ada..d5edd5b0170 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -25,6 +25,7 @@ #include "algorithm.h" #include "environment.h" +#include #include #include @@ -378,6 +379,7 @@ void Environment::modify(const QList & list) } else { // TODO use variable expansion QString value = item.value; + int replaceCount = 0; for (int i=0; i < value.size(); ++i) { if (value.at(i) == QLatin1Char('$')) { if ((i + 1) < value.size()) { @@ -392,6 +394,8 @@ void Environment::modify(const QList & list) Environment::const_iterator it = constFind(name); if (it != constEnd()) value.replace(i, end-i+1, it.value()); + ++replaceCount; + QTC_ASSERT(replaceCount < 100, break); } } }