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