Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
Dragonwell11
提交
ab60a8dd
D
Dragonwell11
项目概览
LinuxSuRen
/
Dragonwell11
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ab60a8dd
编写于
5月 21, 2019
作者:
J
joehw
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8223505: Better pattern compilation
Reviewed-by: rriggs, lancea, dfuchs, mschoene
上级
f164bf85
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
6 deletion
+24
-6
src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java
...m/sun/org/apache/xpath/internal/compiler/XPathParser.java
+17
-4
src/java.xml/share/classes/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
...un/org/apache/xpath/internal/res/XPATHErrorResources.java
+7
-2
未找到文件。
src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/XPathParser.java
浏览文件 @
ab60a8dd
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2017,
2019,
Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
...
...
@@ -34,6 +34,7 @@ import com.sun.org.apache.xpath.internal.res.XPATHErrorResources;
* Tokenizes and parses XPath expressions. This should really be named
* XPathParserImpl, and may be renamed in the future.
* @xsl.usage general
* @LastModified: May 2019
*/
public
class
XPathParser
{
...
...
@@ -71,6 +72,9 @@ public class XPathParser
protected
final
static
int
FILTER_MATCH_PRIMARY
=
1
;
protected
final
static
int
FILTER_MATCH_PREDICATES
=
2
;
// counts open predicates
private
int
countPredicate
;
/**
* The parser constructor.
*/
...
...
@@ -157,6 +161,9 @@ public class XPathParser
}
else
throw
e
;
}
catch
(
StackOverflowError
sof
)
{
error
(
XPATHErrorResources
.
ER_PREDICATE_TOO_MANY_OPEN
,
new
Object
[]{
m_token
,
m_queueMark
,
countPredicate
});
}
compiler
.
shrink
();
...
...
@@ -190,7 +197,12 @@ public class XPathParser
m_ops
.
setOp
(
OpMap
.
MAPINDEX_LENGTH
,
2
);
nextToken
();
Pattern
();
try
{
Pattern
();
}
catch
(
StackOverflowError
sof
)
{
error
(
XPATHErrorResources
.
ER_PREDICATE_TOO_MANY_OPEN
,
new
Object
[]{
m_token
,
m_queueMark
,
countPredicate
});
}
if
(
null
!=
m_token
)
{
...
...
@@ -741,7 +753,7 @@ public class XPathParser
*/
protected
void
Expr
()
throws
javax
.
xml
.
transform
.
TransformerException
{
OrExpr
();
OrExpr
();
}
/**
...
...
@@ -1883,11 +1895,12 @@ public class XPathParser
*/
protected
void
Predicate
()
throws
javax
.
xml
.
transform
.
TransformerException
{
if
(
tokenIs
(
'['
))
{
countPredicate
++;
nextToken
();
PredicateExpr
();
countPredicate
--;
consumeExpected
(
']'
);
}
}
...
...
src/java.xml/share/classes/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
浏览文件 @
ab60a8dd
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
...
...
@@ -32,6 +31,7 @@ import java.util.ListResourceBundle;
* Also you need to update the count of messages(MAX_CODE)or
* the count of warnings(MAX_WARNING) [ Information purpose only]
* @xsl.usage advanced
* @LastModified: May 2019
*/
public
class
XPATHErrorResources
extends
ListResourceBundle
{
...
...
@@ -150,6 +150,8 @@ public class XPATHErrorResources extends ListResourceBundle
"ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG"
;
public
static
final
String
ER_PREDICATE_ILLEGAL_SYNTAX
=
"ER_PREDICATE_ILLEGAL_SYNTAX"
;
public
static
final
String
ER_PREDICATE_TOO_MANY_OPEN
=
"ER_PREDICATE_TOO_MANY_OPEN"
;
public
static
final
String
ER_ILLEGAL_AXIS_NAME
=
"ER_ILLEGAL_AXIS_NAME"
;
public
static
final
String
ER_UNKNOWN_NODETYPE
=
"ER_UNKNOWN_NODETYPE"
;
public
static
final
String
ER_PATTERN_LITERAL_NEEDS_BE_QUOTED
=
...
...
@@ -464,6 +466,9 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
{
ER_PREDICATE_ILLEGAL_SYNTAX
,
"'..[predicate]' or '.[predicate]' is illegal syntax. Use 'self::node()[predicate]' instead."
},
{
ER_PREDICATE_TOO_MANY_OPEN
,
"Stack overflow while parsing {0} at {1}. Too many open predicates {2}."
},
{
ER_ILLEGAL_AXIS_NAME
,
"illegal axis name: {0}"
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录