RFR: 8298033: Character.codePointAt(char[], int, int) doesn't do JavaDoc-specified check [v5]
Sergey Tsypanov
stsypanov at openjdk.org
Tue Dec 6 15:28:24 UTC 2022
> I found out that this code
>
> public class Main {
> public static void main(String[] args) {
> String s = "Hello world!";
> char[] chars = s.toCharArray();
> int point = Character.codePointAt(chars, -1, 1);
> }
> }
>
> throws `ArrayIndexOutOfBoundsException` instead of JavaDoc-specified `IndexOutOfBoundsException`:
>
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 12
> at java.base/java.lang.Character.codePointAtImpl(Character.java:9254)
> at java.base/java.lang.Character.codePointAt(Character.java:9249)
> at org.example.Main.main(Main.java:7)
>
> and the method doesn't check whether `index` parameter is negative:
>
> public static int codePointAt(char[] a, int index, int limit) {
> if (index >= limit || limit < 0 || limit > a.length) {
> throw new IndexOutOfBoundsException();
> }
> return codePointAtImpl(a, index, limit);
> }
>
> I suggest to check the `index` parameter explicitly instead of relying on AIOOBE thrown from accessing the array with negative index.
Sergey Tsypanov has updated the pull request incrementally with one additional commit since the last revision:
8298033: Fix Character.codePointBefore()
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/11480/files
- new: https://git.openjdk.org/jdk/pull/11480/files/5ed82ac0..9a40f08c
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=11480&range=04
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=11480&range=03-04
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/11480.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/11480/head:pull/11480
PR: https://git.openjdk.org/jdk/pull/11480
More information about the core-libs-dev
mailing list