You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/04/09 18:47:57 UTC
svn commit: r1311318 -
/lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java
Author: mikemccand
Date: Mon Apr 9 16:47:56 2012
New Revision: 1311318
URL: http://svn.apache.org/viewvc?rev=1311318&view=rev
Log:
LUCENE-3969: fix PatternTokenizer to not consume chars from the input Reader if it throws IAE
Modified:
lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java
Modified: lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java?rev=1311318&r1=1311317&r2=1311318&view=diff
==============================================================================
--- lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java (original)
+++ lucene/dev/branches/lucene3969/modules/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java Mon Apr 9 16:47:56 2012
@@ -69,12 +69,17 @@ public final class PatternTokenizer exte
super(input);
this.pattern = pattern;
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
if (group >= 0 && group > matcher.groupCount()) {
throw new IllegalArgumentException("invalid group specified: pattern only has: " + matcher.groupCount() + " capturing groups");
}
+ fillBuffer(str, input);
+ matcher.reset(str);
index = 0;
}