RFR: 4617681: constructor of BufferedImage throws unexpected IllegalArgumentException

Sergey Bylokhov serb at openjdk.org
Mon Oct 6 19:10:49 UTC 2025


On Sun, 5 Oct 2025 20:33:26 GMT, Phil Race <prr at openjdk.org> 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


More information about the client-libs-dev mailing list