Skip to content

Commit 81fc432

Browse files
committed
fixes #194 Incorrect parse result when a variable precedes a skipped variable.
1 parent 27c77d9 commit 81fc432

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

src/main/java/org/apache/ibatis/parsing/GenericTokenParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public String parse(String text) {
3939
while (start > -1) {
4040
if (start > 0 && src[start - 1] == '\\') {
4141
// the variable is escaped. remove the backslash.
42-
builder.append(src, offset, start - 1).append(openToken);
42+
builder.append(src, offset, start - offset - 1).append(openToken);
4343
offset = start + openToken.length();
4444
} else {
4545
int end = text.indexOf(closeToken, start);

src/test/java/org/apache/ibatis/parsing/GenericTokenParserTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public void shallNotInterpolateSkippedVaiables() {
7373

7474
assertEquals("${skipped} variable", parser.parse("\\${skipped} variable"));
7575
assertEquals("This is a ${skipped} variable", parser.parse("This is a \\${skipped} variable"));
76+
assertEquals("null ${skipped} variable", parser.parse("${skipped} \\${skipped} variable"));
77+
assertEquals("The null is ${skipped} variable", parser.parse("The ${skipped} is \\${skipped} variable"));
7678
}
7779

7880
@Test(timeout = 1000)

0 commit comments

Comments
 (0)