<AWT Dev> RFR: [XS] 8214380: AwtDragSource function LoadCache misses a ReleaseLongArrayElements in special case
Baesken, Matthias
matthias.baesken at sap.com
Thu Nov 29 09:01:02 UTC 2018
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.
More information about the awt-dev
mailing list