Skip to content

Commit

Permalink
Fix infinite loop where an expression references a property of the sa…
Browse files Browse the repository at this point in the history
…me name. Build regex for expression keys rather than generic variable regex.
  • Loading branch information
lilleyse committed May 23, 2017
1 parent b08c03c commit 8930949
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions Source/Scene/Expression.js
Original file line number Diff line number Diff line change
Expand Up @@ -441,18 +441,16 @@ define([
if (!defined(expressions) || (defined(expressions) && expressions.length === 0)) {
return expression;
}
var result = expression;
var match = variableRegex.exec(expression);
while (match !== null) {
var placeholder = match[0];
var variableName = match[1];
var expressionReplace = expressions[variableName];
if (defined(expressionReplace)) {
result = result.replace(placeholder, expressionReplace);
for (var key in expressions) {
if (expressions.hasOwnProperty(key)) {
var expressionPlaceholder = new RegExp('\\$\\{' + key + '\\}', 'g');
var expressionReplace = expressions[key];
if (defined(expressionReplace)) {
expression = expression.replace(expressionPlaceholder, expressionReplace);
}
}
match = variableRegex.exec(result);
}
return result;
return expression;
}

function removeBackslashes(expression) {
Expand Down

0 comments on commit 8930949

Please sign in to comment.