RFR: 8294008: Graphme implementation of setText() throws IndexOutOfBoundsException

Naoto Sato naoto at openjdk.org
Mon Sep 19 21:04:52 UTC 2022


On Mon, 19 Sep 2022 20:46:08 GMT, Joe Wang <joehw at openjdk.org> wrote:

>> Fixing JCK failures caused by the new grapheme implementation. The length of a CharSequence should return the `endIndex`, not `endIndex - beginIndex`.
>
> src/java.base/share/classes/sun/util/locale/provider/BreakIteratorProviderImpl.java line 329:
> 
>> 327:         @Override
>> 328:         public int length() {
>> 329:             return src.getEndIndex();
> 
> Could the issue be somewhere else?  I mean it feels correct for length = endIndex - beginIndex.

It's somewhat confusing as this class adapts `CharacterIterator` into `CharSequence` which are similar to each other (thus the bug). Those `beginIndex`/`endIndex` designate the range in the source `CharacterIterator`, and this `length()` method should return the entire text length of the `CharSequence` nevertheless, thus it should start from `0` to `endIndex`.

-------------

PR: https://git.openjdk.org/jdk/pull/10349


More information about the core-libs-dev mailing list