On Fri, 3 Oct 2025 19:35:21 GMT, Phil Race <[email protected]> wrote:

>> 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.
>> 
>> The CSR is now ready for review https://bugs.openjdk.org/browse/JDK-8369131
>
> Phil Race has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   8369129

src/java.desktop/share/classes/java/awt/image/Raster.java line 271:

> 269:      * @throws IllegalArgumentException if {@code pixelStride} is less 
> than 0
> 270:      * @throws IllegalArgumentException if {@code w * pixelStride} is 
> greater
> 271:      *         than {@code scanlineStride}

Is it still a valid point even for a single-line image, where scanlineStride 
would not be used?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27627#discussion_r2412143515

Reply via email to