mirror of https://github.com/apache/lucene.git
LUCENE-3969: fix PatternTokenizer to not consume chars from the input Reader if it throws IAE
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene3969@1311318 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d76a03214c
commit
4456273922
|
@ -69,12 +69,17 @@ public final class PatternTokenizer extends Tokenizer {
|
||||||
super(input);
|
super(input);
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.group = group;
|
this.group = group;
|
||||||
fillBuffer(str, input);
|
|
||||||
matcher = pattern.matcher(str);
|
// Use "" instead of str so don't consume chars
|
||||||
|
// (fillBuffer) from the input on throwing IAE below:
|
||||||
|
matcher = pattern.matcher("");
|
||||||
|
|
||||||
// confusingly group count depends ENTIRELY on the pattern but is only accessible via matcher
|
// confusingly group count depends ENTIRELY on the pattern but is only accessible via matcher
|
||||||
if (group >= 0 && group > matcher.groupCount()) {
|
if (group >= 0 && group > matcher.groupCount()) {
|
||||||
throw new IllegalArgumentException("invalid group specified: pattern only has: " + matcher.groupCount() + " capturing groups");
|
throw new IllegalArgumentException("invalid group specified: pattern only has: " + matcher.groupCount() + " capturing groups");
|
||||||
}
|
}
|
||||||
|
fillBuffer(str, input);
|
||||||
|
matcher.reset(str);
|
||||||
index = 0;
|
index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue