diff options
author | Anton Kozlov <akozlov@openjdk.org> | 2022-04-15 14:07:52 +0300 |
---|---|---|
committer | Christoph Langer <clanger@openjdk.org> | 2022-04-19 21:38:30 +0200 |
commit | 224e1a3fcb2c9c43e97e7b0e69d7aad66560f6fc (patch) | |
tree | 5f86109cd8c2fc822a48b473b83a21628b68f81a | |
parent | 91d65505f779887e9c79d6e7181cd2a81f1ea118 (diff) | |
download | jdk11-224e1a3fcb2c9c43e97e7b0e69d7aad66560f6fc.tar.gz |
8284920: Incorrect Token type causes XPath expression to return empty result
Reviewed-by: andrew
3 files changed, 8 insertions, 8 deletions
diff --git a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java index b7b3f419eb..41b58da8e9 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java @@ -360,7 +360,7 @@ class Lexer addToTokenQueue(pat.substring(i, i + 1)); break; - case Token.COLON : + case Token.COLON_CHAR: if (i>0) { if (posOfNSSep == (i - 1)) @@ -615,7 +615,7 @@ class Lexer resetTokenMark(tokPos + 1); } - if (m_processor.lookahead(Token.COLON, 1)) + if (m_processor.lookahead(Token.COLON_CHAR, 1)) { tokPos += 2; } diff --git a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Token.java b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Token.java index 8c4fee146c..7bce14e577 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Token.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Token.java @@ -45,10 +45,9 @@ public final class Token { static final char LPAREN = '('; static final char RPAREN = ')'; static final char COMMA = ','; - static final char DOT = '.'; static final char AT = '@'; static final char US = '_'; - static final char COLON = ':'; + static final char COLON_CHAR = ':'; static final char SQ = '\''; static final char DQ = '"'; static final char DOLLAR = '$'; @@ -58,6 +57,7 @@ public final class Token { static final String DIV = "div"; static final String MOD = "mod"; static final String QUO = "quo"; + static final String DOT = "."; static final String DDOT = ".."; static final String DCOLON = "::"; static final String ATTR = "attribute"; diff --git a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java index c3f9e1494b..22192fd06f 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java @@ -1413,7 +1413,7 @@ public class XPathParser matchFound = true; } - else if (lookahead(Token.LPAREN, 1) || (lookahead(Token.COLON, 1) && lookahead(Token.LPAREN, 3))) + else if (lookahead(Token.LPAREN, 1) || (lookahead(Token.COLON_CHAR, 1) && lookahead(Token.LPAREN, 3))) { matchFound = FunctionCall(); } @@ -1457,7 +1457,7 @@ public class XPathParser int opPos = m_ops.getOp(OpMap.MAPINDEX_LENGTH); - if (lookahead(Token.COLON, 1)) + if (lookahead(Token.COLON_CHAR, 1)) { appendOp(4, OpCodes.OP_EXTFUNCTION); @@ -1841,7 +1841,7 @@ public class XPathParser m_ops.setOp(m_ops.getOp(OpMap.MAPINDEX_LENGTH), OpCodes.NODENAME); m_ops.setOp(OpMap.MAPINDEX_LENGTH, m_ops.getOp(OpMap.MAPINDEX_LENGTH) + 1); - if (lookahead(Token.COLON, 1)) + if (lookahead(Token.COLON_CHAR, 1)) { if (tokenIs(Token.STAR)) { @@ -1944,7 +1944,7 @@ public class XPathParser protected void QName() throws TransformerException { // Namespace - if(lookahead(Token.COLON, 1)) + if(lookahead(Token.COLON_CHAR, 1)) { m_ops.setOp(m_ops.getOp(OpMap.MAPINDEX_LENGTH), m_queueMark - 1); m_ops.setOp(OpMap.MAPINDEX_LENGTH, m_ops.getOp(OpMap.MAPINDEX_LENGTH) + 1); |