RFR: 8352407: PixelInterleavedSampleModel with unused components throws RasterFormatException: Incorrect pixel stride [v2]

Phil Race prr at openjdk.org
Fri May 9 21:30:55 UTC 2025


On Wed, 19 Mar 2025 13:06:56 GMT, Nikita Gubarkov <ngubarkov at openjdk.org> wrote:

>> 8352407: PixelInterleavedSampleModel with unused components throws RasterFormatException: Incorrect pixel stride
>
> Nikita Gubarkov has updated the pull request incrementally with one additional commit since the last revision:
> 
>   The previous approach was wrong for non-pixel interleaving.
>   
>   Just align the buffer size to the pixel stride instead, should be better.

One definite issue with this fix is that it assumes pixelStride !=0
The spec (at least as far back as JDK 1.3) has allowed pixelStride == 0

So this following code is broken with this change

import java.awt.image.*;

public class Z {
  public static void main(String[] args) {
    int[] offsets = {0};
    new ComponentSampleModel(DataBufferInt.TYPE_INT, 1, 1, 0, 0, offsets);
  }
}

% java Z
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at java.desktop/java.awt.image.ComponentSampleModel.getBufferSize(ComponentSampleModel.java:284)
    at java.desktop/java.awt.image.ComponentSampleModel.verify(ComponentSampleModel.java:240)
    at java.desktop/java.awt.image.ComponentSampleModel.<init>(ComponentSampleModel.java:155)
    at Z.main(Z.java:6)

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

PR Comment: https://git.openjdk.org/jdk/pull/24111#issuecomment-2867910475


More information about the client-libs-dev mailing list