Skip to content

Commit 83f94d5

Browse files
committed
avoid StringIndexOutOfBoundsException while adding interpreter error
1 parent ba9be23 commit 83f94d5

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

src/main/java/com/hubspot/jinjava/el/ExpressionResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ private Object resolveExpression(String expression, boolean addToResolvedExpress
141141
TemplateError.fromException(
142142
new TemplateSyntaxException(
143143
expression.substring(
144-
Math.max(e.getPosition() - EXPRESSION_START_TOKEN.length(), 0)
144+
Math.min(expression.length(), Math.max(e.getPosition() - EXPRESSION_START_TOKEN.length(), 0))
145145
),
146146
"Error parsing '" + expression + "': " + errorMessage,
147147
interpreter.getLineNumber(),

src/test/java/com/hubspot/jinjava/el/ExpressionResolverTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,12 @@ public void itResolvesAlternateExpTestSyntaxForTrueAndFalseExpTests() {
636636
.isEqualTo("yes");
637637
}
638638

639+
@Test
640+
public void itAddsErrorRenderingUnclosedExpression() {
641+
interpreter.resolveELExpression("{", 1);
642+
assertThat(interpreter.getErrors().get(0).getMessage()).contains("Error parsing '{': syntax error at position 4, encountered 'null', expected '}'");
643+
}
644+
639645
public String result(String value, TestClass testClass) {
640646
testClass.touch();
641647
return value;

0 commit comments

Comments
 (0)