Fix race conditions when accessing variables

This commit is contained in:
WarmUpTill
2026-03-23 19:51:32 +01:00
committed by WarmUpTill
parent 85460157b1
commit 4d5ffe38fc
4 changed files with 49 additions and 21 deletions

View File

@@ -9,11 +9,12 @@ void StringVariable::Resolve() const
_resolvedValue = _value;
return;
}
if (_lastResolve == GetLastVariableChangeTime()) {
const auto lastChange = GetLastVariableChangeTime();
if (_lastResolve == lastChange) {
return;
}
_resolvedValue = SubstitueVariables(_value);
_lastResolve = GetLastVariableChangeTime();
_lastResolve = lastChange;
}
StringVariable::operator std::string() const
@@ -81,7 +82,7 @@ std::string SubstitueVariables(std::string str)
const auto &variable = std::dynamic_pointer_cast<Variable>(v);
const std::string pattern = "${" + variable->Name() + "}";
if (ReplaceAll(str, pattern, variable->Value(false))) {
variable->UpdateLastUsed();
variable->MarkAsUsed();
}
}
return str;