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

Reply via email to