> 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: Tighten test

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/11480/files
  - new: https://git.openjdk.org/jdk/pull/11480/files/a15bc974..5099c08a

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=11480&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=11480&range=00-01

  Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 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

Reply via email to