Hi, Phil.
Nothing from my side.

> 
> Any [additonial] comment on this ?
> 
> -phil.
> 
> On 01/26/2017 01:55 PM, Philip Race wrote:
>> LIke I said in the bug report, if we get OOME here then we'll get more
>> from the following calls and if we want to make this accessibility code 
>> robust
>> against this theoretical problem a massive destabilising re-write is needed.
>> 
>> How about this change instead
>> --- 
>> a/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m
>> +++ 
>> b/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m
>> @@ -136,7 +136,7 @@
>>         fJavaRole = [javaRole retain];
>> 
>>         fAccessible = (*env)->NewWeakGlobalRef(env, accessible);
>> -
>> +        (*env)->ExceptionClear(env); // in case of OOME
>>         jobject jcomponent = [(AWTView *)fView awtComponent:env];
>>         fComponent = (*env)->NewWeakGlobalRef(env, jcomponent);
>>         (*env)->DeleteLocalRef(env, jcomponent);
>> 
>> -----
>> 
>> ExceptionClear is harmless if there is no exception pending.
>> And we will be "using jni correctly" in making the next call to 
>> NewWeakGlobalRef
>> .. .even if it fails.
>> 
>> fAccessible is mostly guarded against use of NULL so it might even make 
>> things better
>> but definitely won't harm anything.
>> 
>> If we ever see a real issue here that de-stabilising re-write will be needed.
>> But not in JDK 9.
>> 
>> Its either make the mostly useless small change or "will not fix" but
>> we are supposed to be fixing these JNI correctness bugs.
>> 
>> -phil.
>> 
>> On 1/16/17, 7:17 AM, Sergey Bylokhov wrote:
>>> Hi, Phi.
>>>> // these constants are duplicated in CAccessibility.java
>>>> @@ -136,7 +137,7 @@
>>>>         fJavaRole = [javaRole retain];
>>>> 
>>> I am not sure but it seems strange that we will return the "self"(and will 
>>> use it later), because it is not nil and was not properly initialized (for 
>>> example fActionsLOCK field which is used for synchronization will be nil).
> 

Reply via email to