But it returns an array which is an object and you don’t have the original unboxing issue.
Anton. > On 27 Sep 2016, at 15:57, Pete Brunet <peter.bru...@oracle.com> wrote: > > Anton, It looks like you need to also update getInitialAttributeStates. > -Pete > > On 9/16/16 12:49 PM, Anton Tarasov wrote: >> On 9/16/2016 1:32 PM, Sergey Bylokhov wrote: >>> On 15.09.16 14:48, Anton Tarasov wrote: >>>>> Yes, and my suggestion was to use the new method and default values >>>>> everywhere instead of invokeAndWait(Callable,Component). >>>> >>>> But the default value for a reference would be null, there's no need to >>>> request something else, unlike for primitive wrappers. >>>> >>>> Or your idea is to force passing a def value anyway? >>> >>> If the references like Point from getLocationOnScreen() can be null, >>> then ok. looks fine. >> >> Yes, it can. >> >> Anton. >> >>> >>>> >>>> Anton. >>>> >>>>>>> On 15.09.16 12:45, Anton Tarasov wrote: >>>>>>>> Hello, >>>>>>>> >>>>>>>> Please review the fix: >>>>>>>> >>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8165829 >>>>>>>> webrev: http://cr.openjdk.java.net/~ant/JDK-8165829/jdk9/webrev.0 >>>>>>>> >>>>>>>> (The bug is currently closed as “not an issue”, which is not quite >>>>>>>> true. >>>>>>>> So once and if the fix is approved I can take the ownership of the >>>>>>>> bug). >>>>>>>> >>>>>>>> The problem is this. Sometimes when a frame is closed there may >>>>>>>> appear a >>>>>>>> race condition: >>>>>>>> >>>>>>>> - removeNotify() is called on the frame on EDT and it removes >>>>>>>> all the >>>>>>>> events associated with the frame from the event queue. >>>>>>>> >>>>>>>> - The frame is requested by accessibility via the CAccessibility >>>>>>>> static >>>>>>>> methods (like CAccessibility.getAccessibleIndexInParent). Those >>>>>>>> methods >>>>>>>> are called from native on AppKit thread and they perform via >>>>>>>> invokeAndWait. The latter is wrapped with an InvocationEvent whose >>>>>>>> source is set to the frame. But, once the event is put on the event >>>>>>>> queue, it's purged by the removeNotify() call. As the result, >>>>>>>> invokeAndWait returns null. Then, in some of the mentioned methods >>>>>>>> 'null' is unboxed to a primitive 'int' or 'boolean' which results >>>>>>>> in NPE >>>>>>>> propagated to native. On the native side, the NPE is not properly >>>>>>>> handled and is just re-thrown. >>>>>>>> >>>>>>>> I don't have a simple and safe solution for the race. So, I >>>>>>>> suggest to >>>>>>>> fix the NPE/crash at least. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Anton. >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>> >>> >>> >> >