diff options
Diffstat (limited to 'src/share/classes/sun/awt/image/ByteBandedRaster.java')
-rw-r--r-- | src/share/classes/sun/awt/image/ByteBandedRaster.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/share/classes/sun/awt/image/ByteBandedRaster.java b/src/share/classes/sun/awt/image/ByteBandedRaster.java index 164324f84..62dbcc69a 100644 --- a/src/share/classes/sun/awt/image/ByteBandedRaster.java +++ b/src/share/classes/sun/awt/image/ByteBandedRaster.java @@ -755,10 +755,22 @@ public class ByteBandedRaster extends SunWritableRaster { + scanlineStride); } - for (int i = 0; i < data.length; i++) { - if (scanlineStride > data[i].length) { - throw new RasterFormatException("Incorrect scanline stride: " - + scanlineStride); + if ((long)minX - sampleModelTranslateX < 0 || + (long)minY - sampleModelTranslateY < 0) { + + throw new RasterFormatException("Incorrect origin/translate: (" + + minX + ", " + minY + ") / (" + + sampleModelTranslateX + ", " + sampleModelTranslateY + ")"); + } + + + if (height > 1 || minY - sampleModelTranslateY > 0) { + // buffer should contain at least one scanline + for (int i = 0; i < data.length; i++) { + if (scanlineStride > data[i].length) { + throw new RasterFormatException("Incorrect scanline stride: " + + scanlineStride); + } } } |