Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/util/StemmerUtil.java =================================================================== --- lucene/analysis/common/src/java/org/apache/lucene/analysis/util/StemmerUtil.java (revision 1525521) +++ lucene/analysis/common/src/java/org/apache/lucene/analysis/util/StemmerUtil.java (working copy) @@ -87,10 +87,12 @@ * @return length of input buffer after deletion */ public static int delete(char s[], int pos, int len) { - if (pos < len) + if (pos < len) { System.arraycopy(s, pos + 1, s, pos, len - pos - 1); - - return len - 1; + return len - 1; + } else { + return len; + } } /** @@ -103,9 +105,12 @@ * @return length of input buffer after deletion */ public static int deleteN(char s[], int pos, int len, int nChars) { - // TODO: speed up, this is silly - for (int i = 0; i < nChars; i++) - len = delete(s, pos, len); - return len; + if (pos < len) { + nChars = pos + nChars > len ? len - pos : nChars; + System.arraycopy(s, pos + nChars, s, pos, len - pos - nChars); + return len - nChars; + } else { + return len; + } } }