From 12309e9e2d45e30d46fd3d8b425a65b0824024ef Mon Sep 17 00:00:00 2001 From: gnembon Date: Mon, 22 Jun 2020 16:21:55 -0300 Subject: [PATCH] making sure try, return etc. control flow doesn't leak through in_dimension. --- src/main/java/carpet/script/CarpetExpression.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/carpet/script/CarpetExpression.java b/src/main/java/carpet/script/CarpetExpression.java index b69a5267..23e66830 100644 --- a/src/main/java/carpet/script/CarpetExpression.java +++ b/src/main/java/carpet/script/CarpetExpression.java @@ -3205,10 +3205,17 @@ public class CarpetExpression throw new InternalExpressionException("Incorrect dimension string: "+dimString); } } - ((CarpetContext) c).s = innerSource; - Value retval = lv.get(1).evalValue(c); - ((CarpetContext) c).s = outerSource; - return (cc, tt) -> retval; + try + { + ((CarpetContext) c).s = innerSource; + Value retval = lv.get(1).evalValue(c); + return (cc, tt) -> retval; + } + finally + { + ((CarpetContext) c).s = outerSource; + } + }); this.expr.addLazyFunction("plop", 4, (c, t, lv) ->{