Hi, Ajit.
What about other cases in Raster.java, where the DataBuffer is passed as a parameter? Probably we can simplify the code and find all such issues if we changes the ByteInterleavedRaster/etc. For example:

ByteInterleavedRaster(SampleModel sampleModel,DataBuffer dataBuffer,...)
to

ByteInterleavedRaster(SampleModel sampleModel,DataBufferByte dataBuffer,...)

Because we throw an exception in such cases anyway:

if (!(dataBuffer instanceof DataBufferByte)) {
throw new RasterFormatException("ByteInterleavedRasters must have " + "byte DataBuffers");
}

And the compiler will help us, what everybody think about it?

On 09.03.16 17:38, Ajit Ghaisas wrote:
Hi,

    Modified the test and added check for MultiPixelPackedSampleModel condition.

    Please review updated webrev :
    http://cr.openjdk.java.net/~arapte/ajit/6353518/webrev.01/

Regards,
Ajit

-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, March 09, 2016 4:06 PM
To: Ajit Ghaisas; awt-...@openjdk.java.net; Semyon Sadetsky; Ambarish Rapte; 
2d-dev
Subject: Re: [9] Review-request for 6353518: Creation of a WritableRaster with 
a custom DataBuffer causes erroneous Exception

Changes for 2d area.(cc)


On 07.03.16 11:20, Ajit Ghaisas wrote:
Hi,

Bug : https://bugs.openjdk.java.net/browse/JDK-6353518

Issue : (Text from bug description)

An attempt to create a WritableRaster via
Raster.createWritableRaster(SampleModel sm, DataBuffer db, Point
location) using a custom DataBuffer causes an erroneous
RasterFormatException.
Apparently the reason for this bug is that IntegerComponentRaster
insists on being passed an instance of DataBufferInt rather than just
a DataBuffer with a DataType of TYPE_INT.
This is quite annoying since DataBufferInt is declared final and thus
cannot be extended.

Fix :

The last line of Raster.createWritableRaster() method already has a
way to handle generic case if the input does not match any of the
cases in switch statements in that method.

The fact that  " *InterleavedRaster() constructors throw exception if
DataBuffer passed to them does not match the expected type" was
ignored earlier.

This fix adds a check of "DataBuffer type" before creating respective
*InterleavedRaster() objects.

It constructs the SunWritableRaster in case DataBuffer type does not
match any data specific DataBuffer classes (DataBufferByte,
DataBufferUShort, DataBufferInt)

Request to review webrev containing this fix :

http://cr.openjdk.java.net/~arapte/ajit/6353518/webrev.00/

Regards,

Ajit



--
Best regards, Sergey.



--
Best regards, Sergey.

Reply via email to