forked from qt-creator/qt-creator
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:
@@ -101,7 +101,9 @@ static QString expandMacroEnv(const QString ¯oPrefix,
|
|||||||
do {
|
do {
|
||||||
done = true;
|
done = true;
|
||||||
for (qsizetype pos = 0; int len = findMacro(result, &pos, ¯oName);) {
|
for (qsizetype pos = 0; int len = findMacro(result, &pos, ¯oName);) {
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user