Name: bsC130419 Date: 06/01/2001
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)
In the following code, the first compile attempt works, but
the other two throw ArrayIndexOutOfBoundsException's, each
from a different method, as shown in the stack traces. It
looks like those two methods are trying to expand the pattern
buffer beyond its original 32-character allocation, but are
referring to element #32 in the process.
import java.util.regex.*;
public class PatternTest
{
public static void main(String[] argv)
{
Pattern pat;
try {
pat = Pattern.compile("a 32-character-long pattern xxxx");
} catch (ArrayIndexOutOfBoundsException ex) {
ex.printStackTrace();
}
try {
pat = Pattern.compile("a 33-character-long pattern xxxxx");
} catch (ArrayIndexOutOfBoundsException ex) {
ex.printStackTrace();
}
try {
pat = Pattern.compile("a thirty four character long regex");
} catch (ArrayIndexOutOfBoundsException ex) {
ex.printStackTrace();
}
}
}
$ java PatternTest
java.lang.ArrayIndexOutOfBoundsException
at java.util.regex.Pattern.newSlice(Pattern.java:2330)
at java.util.regex.Pattern.atom(Pattern.java:1553)
at java.util.regex.Pattern.sequence(Pattern.java:1471)
at java.util.regex.Pattern.expr(Pattern.java:1383)
at java.util.regex.Pattern.compile(Pattern.java:1231)
at java.util.regex.Pattern.<init>(Pattern.java:919)
at java.util.regex.Pattern.compile(Pattern.java:678)
at PatternTest.main(PatternTest.java:14)
java.lang.ArrayIndexOutOfBoundsException
at java.util.regex.Pattern.append(Pattern.java:1562)
at java.util.regex.Pattern.atom(Pattern.java:1543)
at java.util.regex.Pattern.sequence(Pattern.java:1471)
at java.util.regex.Pattern.expr(Pattern.java:1383)
at java.util.regex.Pattern.compile(Pattern.java:1231)
at java.util.regex.Pattern.<init>(Pattern.java:919)
at java.util.regex.Pattern.compile(Pattern.java:678)
at PatternTest.main(PatternTest.java:19)
(Review ID: 125240)
======================================================================
- duplicates
-
JDK-4474653 java.util.regex.Pattern.compile() fails with long quoted string
-
- Closed
-