CMakePM: Fix macro substitution recursion

One could have a "PATH": "$env{PATH}" entry that would bring Qt Creator
into infinite recursion.

Change-Id: If2402b8e8550dc5be2435f4ca040f91ec239a06c
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2024-08-15 11:37:57 +02:00
parent 5d8a8982a1
commit 84d0664e5c

View File

@@ -101,7 +101,9 @@ static QString expandMacroEnv(const QString &macroPrefix,
do { do {
done = true; done = true;
for (qsizetype pos = 0; int len = findMacro(result, &pos, &macroName);) { for (qsizetype pos = 0; int len = findMacro(result, &pos, &macroName);) {
result.replace(pos, len, op(macroName)); const QString replacement = op(macroName);
// Prevent recursion by not allowing the same value to be reused
result.replace(pos, len, replacement != value ? replacement : "");
pos += macroName.length(); pos += macroName.length();
done = false; done = false;
} }