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

Reply via email to