<AWT Dev> RFR: [XS] 8214380: AwtDragSource function LoadCache misses a ReleaseLongArrayElements in special case

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Sat Dec 1 00:17:40 UTC 2018


Looks fine.

On 30/11/2018 05:22, Baesken, Matthias wrote:
> Hi Sergey,   I prepared a second webrev  :
> 
> http://cr.openjdk.java.net/~mbaesken/webrevs/8214380.1/
> 
> - removed the unused isCopy
> - added a NULL check  after  GetLongArrayElements
> 
> 
> Best regards, Matthias
> 
> 
> 
>> -----Original Message-----
>> From: Baesken, Matthias
>> Sent: Donnerstag, 29. November 2018 10:01
>> To: 'Sergey Bylokhov' <Sergey.Bylokhov at oracle.com>; 'awt-
>> dev at openjdk.java.net' <awt-dev at openjdk.java.net>
>> Subject: RE: <AWT Dev> RFR: [XS] 8214380: AwtDragSource function
>> LoadCache misses a ReleaseLongArrayElements in special case
>>
>> Btw when looking at the coding,  I  wonder  why  we save the copy-state  in
>> isCopy  :
>>
>> Docu :    "If isCopy is not NULL, then *isCopy is set to JNI_TRUE if a copy is
>> made; or it is set to JNI_FALSE if no copy is made"
>>
>>   397     jboolean isCopy;
>>   398     jlong *lFormats = env->GetLongArrayElements(formats, &isCopy),
>>
>>   But  then we do not use it afterwards ,   so should we better call   it with
>> NULL  instead?
>>
>> Regards, Matthias
>>
>>
>>> -----Original Message-----
>>> From: Baesken, Matthias
>>> Sent: Donnerstag, 29. November 2018 09:17
>>> To: 'Sergey Bylokhov' <Sergey.Bylokhov at oracle.com>; awt-
>>> dev at openjdk.java.net
>>> Subject: RE: <AWT Dev> RFR: [XS] 8214380: AwtDragSource function
>>> LoadCache misses a ReleaseLongArrayElements in special case
>>>
>>> Hi Sergey,   I  think it is (at least)  a good practice  to NULL -  check  the result
>>> of  env->GetLongArrayElements .
>>> Probably it should be done  right after  the
>>>
>>>       jlong *lFormats = env->GetLongArrayElements(formats, &isCopy),
>>>
>>> call.
>>> See  jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c   for
>>> examples of usages   of the function (with NULL checks) .
>>>
>>> Or see the documentation at
>>>
>> https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/function
>>> s.html
>>> Where we find :
>>>
>>>
>>> Get<PrimitiveType>ArrayElements Routines
>>>     ....
>>> PARAMETERS:
>>>
>>> env: the JNI interface pointer.
>>> array: a Java string object.
>>> isCopy: a pointer to a boolean.
>>>
>>>
>>> RETURNS:
>>>
>>> Returns a pointer to the array elements, ****or NULL if the operation
>>> fails.****
>>>
>>>
>>> So returning NULL might  happen .
>>>
>>> Best regards, Matthias
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: Sergey Bylokhov <Sergey.Bylokhov at oracle.com>
>>>> Sent: Donnerstag, 29. November 2018 00:22
>>>> To: Baesken, Matthias <matthias.baesken at sap.com>; awt-
>>>> dev at openjdk.java.net
>>>> Subject: Re: <AWT Dev> RFR: [XS] 8214380: AwtDragSource function
>>>> LoadCache misses a ReleaseLongArrayElements in special case
>>>>
>>>> Hi, Matthias.
>>>>
>>>> Do we need the null check in the fix, if "yes" then probably
>>>> the same check should be added before this line as well?
>>>>     465     env->ReleaseLongArrayElements(formats, saveFormats, 0);
>>>>
>>>> On 28/11/2018 00:33, Baesken, Matthias wrote:
>>>>> Hello, please review  this small fix.
>>>>>
>>>>> It adds a missing ReleaseLongArrayElements  to
>>>>>
>>>>> void AwtDragSource::LoadCache(jlongArray formats)
>>>>>
>>>>> in an early special   "pseudo return"  (leave function via throw)  case.
>>>>>
>>>>> Webrev/bug :
>>>>>
>>>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8214380.0/
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-8214380
>>>>>
>>>>> Thanks, Matthias
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards, Sergey.


-- 
Best regards, Sergey.


More information about the awt-dev mailing list