RFR: 8369129: Raster createPackedRaster methods specification clean up [v4]
Phil Race
prr at openjdk.org
Fri Oct 3 19:35:21 UTC 2025
> Updates the specification of Raster.createPackedRaster(..) methods and also the implementation of these to explicitly check the specified conditions rather than relying on them being passed up from some other API.
>
> Also one each of the createInterleavedRaster(..) and createBandedRaster(..) methods have an update
>
> createInterleavedRaster(...) to address that even if WxH does not exceed Integer.MAX_VALUE, the storage needed still might.
>
> createBandedRaster(..) to address
> - a not explicitly specified or tested case that WxH must not overflow
> - a not explicitly tested NPE case if bandMasks is null. This was relying on a de-reference and the actual check for it being null would have thrown the wrong exception type (AIOBE) - meaning not the one NPE actually specified and thrown.
> There's an unfortunate oddity with this that of bankIndices is null it specifies and throws AIOBE, but I didn't think it worth changing either of these to make them consistent.
>
> The existing CreateRasterExceptionTest.java is updated to verify all these assertions.
> In almost all cases the behaviour is unchanged, it is just now properly specified and verified up front.
>
> There are only 2 sub-tests which would fail on JDK 25
> The test can also be run (and pass) there without this fix because it explicitly handles those 2 cases which are reasonable behavioral changes
> - One for the createInterleavedRaster() update where the unchecked case could end up causing a NegativeArraySizeException. This seems like a merited change.
> - One for an unlikely case where if an app specified 0 app to createPackedRaster, divide by zero would happen.
Phil Race has updated the pull request incrementally with one additional commit since the last revision:
8369129
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/27627/files
- new: https://git.openjdk.org/jdk/pull/27627/files/f00d5bc6..b95c4ad0
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=27627&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=27627&range=02-03
Stats: 3 lines in 1 file changed: 0 ins; 3 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/27627.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27627/head:pull/27627
PR: https://git.openjdk.org/jdk/pull/27627
More information about the client-libs-dev
mailing list