提交 c4b57c25 编写于 作者: A andrew

Merge

......@@ -1070,3 +1070,5 @@ e767af0b6500d829977e23cfb3fe19f28a4e9f88 jdk8u252-b04
b988f627520c45015f0b91d2ee35e69531300770 jdk8u252-b06
0666ec7fe2b45353dc0e09c1f6f386bdf763eeb4 jdk8u252-b07
95d61d0f326bbfaddc2cbd29e67b12c00041caaa jdk8u252-b08
2f5ad880fd3372eb5c2e5ac5ee82c705a1b6ac07 jdk8u252-b09
2f5ad880fd3372eb5c2e5ac5ee82c705a1b6ac07 jdk8u252-ga
/*
* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -141,14 +141,14 @@ final class RegExpScanner extends Scanner {
throw new PatternSyntaxException(e.getMessage(), string, scanner.position);
}
scanner.processForwardReferences();
// Throw syntax error unless we parsed the entire JavaScript regexp without syntax errors
if (scanner.position != string.length()) {
final String p = scanner.getStringBuilder().toString();
throw new PatternSyntaxException(string, p, p.length() + 1);
}
scanner.processForwardReferences();
return scanner;
}
......
......@@ -452,7 +452,7 @@ class Parser extends Lexer {
private Node parseExp(final TokenType term) {
if (token.type == term)
{
return StringNode.EMPTY; // goto end_of_token
return StringNode.createEmpty(); // goto end_of_token
}
Node node = null;
......@@ -461,7 +461,7 @@ class Parser extends Lexer {
switch(token.type) {
case ALT:
case EOT:
return StringNode.EMPTY; // end_of_token:, node_new_empty
return StringNode.createEmpty(); // end_of_token:, node_new_empty
case SUBEXP_OPEN:
node = parseEnclose(TokenType.SUBEXP_CLOSE);
......@@ -569,7 +569,7 @@ class Parser extends Lexer {
if (syntax.contextInvalidRepeatOps()) {
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED);
}
node = StringNode.EMPTY; // node_new_empty
node = StringNode.createEmpty(); // node_new_empty
} else {
return parseExpTkByte(group); // goto tk_byte
}
......
......@@ -27,7 +27,6 @@ public final class StringNode extends Node implements StringType {
private static final int NODE_STR_MARGIN = 16;
private static final int NODE_STR_BUF_SIZE = 24;
public static final StringNode EMPTY = new StringNode(null, Integer.MAX_VALUE, Integer.MAX_VALUE);
public char[] chars;
public int p;
......@@ -36,7 +35,13 @@ public final class StringNode extends Node implements StringType {
public int flag;
public StringNode() {
this.chars = new char[NODE_STR_BUF_SIZE];
this(NODE_STR_BUF_SIZE);
}
private StringNode(int size) {
this.chars = new char[size];
this.p = 0;
this.end = 0;
}
public StringNode(final char[] chars, final int p, final int end) {
......@@ -51,6 +56,13 @@ public final class StringNode extends Node implements StringType {
chars[end++] = c;
}
/**
* Create a new empty StringNode.
*/
public static StringNode createEmpty() {
return new StringNode(0);
}
/* Ensure there is ahead bytes available in node's buffer
* (assumes that the node is not shared)
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册