[OpenJDK 2D-Dev] [9] Fix for JDK-8160421 : Regression: JDK-8139192 causes NPE in java.awt.Toolkit.createCustomCursor()

Jim Graham james.graham at oracle.com
Thu Jun 30 23:43:17 UTC 2016


The solution looks fine to me.

I didn't run the test case, but about the only issue I can see with it 
is whether it should have a flag to run it in its own VM because of its 
interaction with System.err.  Phil?

			...jim

On 06/30/2016 06:41 AM, Ajit Ghaisas wrote:
> Hi,
>
> Bug :
>      This is regarding a NPE getting printed as stacktrace in java.awt.Toolkit.createCustomCursor() method.
>      The bug is described at : https://bugs.openjdk.java.net/browse/JDK-8160421
>
> Root Cause :
>      Fix of bug JDK-8139192 : Custom ImageFilters return blank images in Java 8(.45) while working in 7.
>      The above fix added a RuntimeException catch & log mechanism to support a ImageFilter which was broken due to the second imageComplete() call in OffScreenImageSource.produce() method.
>
> Analysis:
>      Without the fix of JDK-8139192, java.awt.Toolkit.createCustomCursor() call results in
>      NullPointerException when imageComplete(ImageConsumer.STATICIMAGEDONE) call is made - but, it gets consumed silently.
>      Cathing RuntimeException() out of imageComplete(ImageConsumer.STATICIMAGEDONE) was added to fix JDK-8160421.
>      This started catching & logging the exception in case 'theConsumer' has unregistered itself as a result of call
>                     theConsumer.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
>       This log is undesirable as this mechanism is used in java.awt.Toolkit.createCustomCursor() and may be in other places.
>
> Fix :
>      Make the call to imageComplete(ImageConsumer.STATICIMAGEDONE) only if 'theConsumer' has not been unregistered.
>
> Webrev:
>      http://cr.openjdk.java.net/~aghaisas/8160421/webrev.00/
>
> Request you to review.
>
> Regards,
> Ajit
>



More information about the 2d-dev mailing list