RFR: 8298033: Character.codePointAt(char[], int, int) doesn't do JavaDoc-specified check [v3]

Sergey Tsypanov stsypanov at openjdk.org
Mon Dec 5 13:25:06 UTC 2022


On Sat, 3 Dec 2022 18:40:59 GMT, Sergey Tsypanov <stsypanov at openjdk.org> wrote:

>> test/jdk/java/lang/Character/Supplementary.java line 808:
>> 
>>> 806:                 return;
>>> 807:             }
>>> 808:             if (expectedException.isInstance(e)) { // Character.codePointBefore() throws
>> 
>> The test should fail without the fix, but this fall-through allows the test to pass.
>> 
>> The qualification added for `isAt` is hiding a second/corresponding bug in `codePointBefore` where the index is not checked and an ArrayIndexOutOfBounds occurs at codePointBeforeImpl: 9488.
>
> Yeah, this AIOOBE is exactly the reason why I added this. So should we modify `codePointBefore` in the same way as `codePointAt`?

I'm asking because counter-intuitively `codePointBefore ` doesn't specify IOOBE for negative `index`.

/**
 * @return the Unicode code point value before the given index.
 * @throws NullPointerException if {@code a} is null.
 * @throws IndexOutOfBoundsException if the {@code index}
 * argument is not greater than the {@code start} argument or
 * is greater than the length of the {@code char} array, or
 * if the {@code start} argument is negative or not less than
 * the length of the {@code char} array.
 * @since  1.5
 */
 ```

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

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


More information about the core-libs-dev mailing list