RFR: 8298033: Character.codePointAt(char[], int, int) doesn't do JavaDoc-specified check
Sergey Tsypanov
stsypanov at openjdk.org
Fri Dec 2 12:53:12 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.
-------------
Commit messages:
- 8298033: Character.codePointAt(char[], int, int) doesn't do JavaDoc-specified check
Changes: https://git.openjdk.org/jdk/pull/11480/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11480&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8298033
Stats: 2 lines in 1 file changed: 0 ins; 1 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