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