On Sun, 5 Oct 2025 20:33:26 GMT, Phil Race <[email protected]> wrote:
> Specifying the behaviour of BufferedImage constructors for invalid dimensions
> is long overdue.
>
> The behaviour for image types and sizes <= 0 is unchanged by this PR.
> Also in many cases the behaviour for sizes that are too large is also
> unchanged.
> In some cases, the behaviour is changed from "accidental"
> NegativeArraySizeException to a consistent IllegalArgumentException.
>
> In no case is anything changed that would affect the possibility to construct
> a BufferedImage.
>
> A test is provided to ensure the behaviour.
>
> A CSR is provided too : https://bugs.openjdk.org/browse/JDK-8369155
src/java.desktop/share/classes/java/awt/image/BufferedImage.java line 314:
> 312: * @throws IllegalArgumentException if the multiplication product of
> 313: * {@code width}, {@code height}, and the number of samples
> per pixel
> 314: * for the specified format exceeds the maximum length of a
> Java array.
This check seems too strict. It is possible to implement a BufferedImage that
splits its internal data into multiple surfaces/arrays. It might be better to
phrase this as optional:
“for the specified format exceeds the maximum supported length”
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27640#discussion_r2408048654