<Swing Dev> [14] RFR JDK-8230235 - Rendering HTML with empty img attribute and documentBaseKey cause Exception
Pankaj Bansal
pankaj.b.bansal at oracle.com
Thu Oct 31 12:59:51 UTC 2019
Hi Sergey/Alexey
Webrev: http://cr.openjdk.java.net/~pbansal/8230235/webrev01/
<< I guess that the problem is that the "image" is accessed w/o synchronization on "this" like in other places, but it will be necessary to add one null check before usage of "image".
I have updated the code to access image with synchronization. But that does not solve the issue. So I have kept the null check also. I tried to add the null check before calling getWidth, calling getWidth still makes the image null. So the check before calling getHeight is still required.
<<This requires a comment, doesn't it? Otherwise the condition in if looks always true. Is it possible that image becomes null before getWidth() is called?
I have added the comment. I don't see a case where image is null before calling getWidth, so did not add a null check there.
<< I agree with Sergey, try-catch are not necessary in this case: you declared that main throws Exception. Any exception indicates the test failed.
<<Since JLabel is a Swing component, you should create its instance on EDT. SwingUtilities.invokeAndWait would do the job.
Done
Regards,
Pankaj
-----Original Message-----
From: Alexey Ivanov
Sent: Wednesday, October 16, 2019 7:27 PM
To: Pankaj Bansal; swing-dev
Cc: Sergey Bylokhov
Subject: Re: <Swing Dev> [14] RFR JDK-8230235 - Rendering HTML with empty img attribute and documentBaseKey cause Exception
Hi Pankaj,
I'd like to confirm:
793 int width = image.getWidth(imageObserver);
794 if (image != null) {
the image is not null at line 793, and as the side effect of calling image.getWidth(imageObserver), image is set to null, right?
This requires a comment, doesn't it? Otherwise the condition in if looks always true. Is it possible that image becomes null before getWidth() is called?
Can we implement this differently?
I guess we'll also get NPE if src attribute of <image> tag is not an image.
I agree with Sergey, try-catch are not necessary in this case: you declared that main throws Exception. Any exception indicates the test failed.
Since JLabel is a Swing component, you should create its instance on EDT. SwingUtilities.invokeAndWait would do the job.
Regards,
Alexey
On 10/10/2019 21:35, Sergey Bylokhov wrote:
> Hi, Pankaj.
> I guess that the problem is that the "image" is accessed w/o
> synchronization on "this"
> like in other places, but it will be necessary to add one null check
> before usage of "image".
> Also, it is not necessary to have a try/catch block in the test, just
> call the problematic method
>
> On 10/10/19 11:01 am, Pankaj Bansal wrote:
>> Hi All,
>>
>> Please review the following fix for jdk14.
>>
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8230235
>>
>> Webrev: http://cr.openjdk.java.net/~pbansal/8230235/webrev00/
>>
>> Issue:
>>
>> Rendering HTML with empty img attribute and documentBaseKey set
>> causes NPE
>>
>> Fix:
>>
>> The issues is introduced after
>> https://bugs.openjdk.java.net/browse/JDK-8218674.
>>
>> When the documentBaseKey is set, but img tag is not set, the image
>> URL may not be complete and may not point to actual image. In
>> ImageView class, when getWidth(ImageObserver) is called from the
>> updateImageSize, it checks if image source is null and adds the
>> ImageObserver (ImageView.ImageHandler) on the Image and sets the
>> ImageView image as null. When getHeight is called, as image is set to
>> null, it results in NPE.
>>
>> We should verify that image is not null.
>>
>> Testing:
>>
>> I have tested it on Window, Linux and Mac.
>>
>>
>> Regards,
>> Pankaj Bansal
>>
>
>
More information about the swing-dev
mailing list