Skip to content
This repository was archived by the owner on Jan 13, 2023. It is now read-only.

Commit 1839a5d

Browse files
AntonKozlovlutkerd
authored andcommitted
8284920: Incorrect Token type causes XPath expression to return empty result
Reviewed-by:
1 parent c14f500 commit 1839a5d

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ else if ((Token.LPAREN != c) && (Token.RPAREN != c) && (Token.RBRACK != c)) {
361361

362362
addToTokenQueue(pat.substring(i, i + 1));
363363
break;
364-
case Token.COLON :
364+
case Token.COLON_CHAR:
365365
if (i>0)
366366
{
367367
if (posOfNSSep == (i - 1))
@@ -617,7 +617,7 @@ private void recordTokenString(List<String> targetStrings)
617617
resetTokenMark(tokPos + 1);
618618
}
619619

620-
if (m_processor.lookahead(Token.COLON, 1))
620+
if (m_processor.lookahead(Token.COLON_CHAR, 1))
621621
{
622622
tokPos += 2;
623623
}

src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Token.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,9 @@ public final class Token {
4545
static final char LPAREN = '(';
4646
static final char RPAREN = ')';
4747
static final char COMMA = ',';
48-
static final char DOT = '.';
4948
static final char AT = '@';
5049
static final char US = '_';
51-
static final char COLON = ':';
50+
static final char COLON_CHAR = ':';
5251
static final char SQ = '\'';
5352
static final char DQ = '"';
5453
static final char DOLLAR = '$';
@@ -58,6 +57,7 @@ public final class Token {
5857
static final String DIV = "div";
5958
static final String MOD = "mod";
6059
static final String QUO = "quo";
60+
static final String DOT = ".";
6161
static final String DDOT = "..";
6262
static final String DCOLON = "::";
6363
static final String ATTR = "attribute";

src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1413,7 +1413,7 @@ else if ((null != m_token) && ((('.' == m_tokenChar) && (m_token.length() > 1) &
14131413

14141414
matchFound = true;
14151415
}
1416-
else if (lookahead(Token.LPAREN, 1) || (lookahead(Token.COLON, 1) && lookahead(Token.LPAREN, 3)))
1416+
else if (lookahead(Token.LPAREN, 1) || (lookahead(Token.COLON_CHAR, 1) && lookahead(Token.LPAREN, 3)))
14171417
{
14181418
matchFound = FunctionCall();
14191419
}
@@ -1457,7 +1457,7 @@ protected boolean FunctionCall() throws TransformerException
14571457

14581458
int opPos = m_ops.getOp(OpMap.MAPINDEX_LENGTH);
14591459

1460-
if (lookahead(Token.COLON, 1))
1460+
if (lookahead(Token.COLON_CHAR, 1))
14611461
{
14621462
appendOp(4, OpCodes.OP_EXTFUNCTION);
14631463

@@ -1841,7 +1841,7 @@ protected void NodeTest(int axesType) throws TransformerException
18411841
m_ops.setOp(m_ops.getOp(OpMap.MAPINDEX_LENGTH), OpCodes.NODENAME);
18421842
m_ops.setOp(OpMap.MAPINDEX_LENGTH, m_ops.getOp(OpMap.MAPINDEX_LENGTH) + 1);
18431843

1844-
if (lookahead(Token.COLON, 1))
1844+
if (lookahead(Token.COLON_CHAR, 1))
18451845
{
18461846
if (tokenIs(Token.STAR))
18471847
{
@@ -1944,7 +1944,7 @@ protected void PredicateExpr() throws TransformerException
19441944
protected void QName() throws TransformerException
19451945
{
19461946
// Namespace
1947-
if(lookahead(Token.COLON, 1))
1947+
if(lookahead(Token.COLON_CHAR, 1))
19481948
{
19491949
m_ops.setOp(m_ops.getOp(OpMap.MAPINDEX_LENGTH), m_queueMark - 1);
19501950
m_ops.setOp(OpMap.MAPINDEX_LENGTH, m_ops.getOp(OpMap.MAPINDEX_LENGTH) + 1);

0 commit comments

Comments
 (0)