From 047fdc6ada11475d66cd320ee0cc3ac6096c0b06 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sat, 6 Nov 2021 20:34:18 +0100 Subject: [PATCH] Wrap value stringifying into a try-catch block --- src/main/java/carpet/script/CarpetScriptHost.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index b243d495..feb71b6b 100644 --- a/src/main/java/carpet/script/CarpetScriptHost.java +++ b/src/main/java/carpet/script/CarpetScriptHost.java @@ -1104,8 +1104,14 @@ public class CarpetScriptHost extends ScriptHost continue; stringsToFormat.add(format + line.substring(lastPos, foundLocal.getKey())); 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" - + context.variables.get(foundLocal.getValue()).evalValue(context).getPrettyString()); // can this throw? Should this have a catch? + + value); lastPos = foundLocal.getKey() + foundLocal.getValue().length(); } if (line.length() != lastPos)