RFR: 8369129: Raster createPackedRaster methods specification clean up.
Phil Race
prr at openjdk.org
Fri Oct 3 18:58:57 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.
-------------
Commit messages:
- 8369129
Changes: https://git.openjdk.org/jdk/pull/27627/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27627&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8369129
Stats: 601 lines in 2 files changed: 556 ins; 17 del; 28 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