Wrap value stringifying into a try-catch block

This commit is contained in:
altrisi committed 2021-11-06 20:34:18 +01:00
1 parent de28982646
commit 047fdc6ada
1 file changed
+7 -1
@@ -1104,8 +1104,14 @@ public class CarpetScriptHost extends ScriptHost
continue; continue;
stringsToFormat.add(format + line.substring(lastPos, foundLocal.getKey())); stringsToFormat.add(format + line.substring(lastPos, foundLocal.getKey()));
stringsToFormat.add(format + foundLocal.getValue()); stringsToFormat.add(format + foundLocal.getValue());
String value;
try {
value = context.variables.get(foundLocal.getValue()).evalValue(context).getPrettyString();
} catch (StackOverflowError e) {
value = "Exception while rendering variable, there seems to be a recursive reference in there";
}
stringsToFormat.add("^ Value of '" + foundLocal.getValue() + "' at position: \n" stringsToFormat.add("^ Value of '" + foundLocal.getValue() + "' at position: \n"
+ context.variables.get(foundLocal.getValue()).evalValue(context).getPrettyString()); // can this throw? Should this have a catch? + value);
lastPos = foundLocal.getKey() + foundLocal.getValue().length(); lastPos = foundLocal.getKey() + foundLocal.getValue().length();
} }
if (line.length() != lastPos) if (line.length() != lastPos)