That’s what I think too, this is just to silent parfait.
I don’t know for sure that we always get NULL with exception pending though.

Cheers,
Henry

On September 1, 2016 at 12:34:02 AM, David Holmes (david.hol...@oracle.com) 
wrote:
> On 1/09/2016 5:51 AM, Henry Jen wrote:
> > Hi,
> >
> > Please review a trivial fix for 8081388, in a nutshell,
> >
> > - Return NULL from NewPlatformStringArray if an exception occurred
> > - All other places call this function already handled return value NULL
> > - Launcher handles exception in JavaMain, report error and exit.
> >
> > Cheers,
> > Henry
> >
> > diff --git a/src/java.base/share/native/libjli/java.c 
> > b/src/java.base/share/native/libjli/java.c  
> > --- a/src/java.base/share/native/libjli/java.c
> > +++ b/src/java.base/share/native/libjli/java.c
> > @@ -1497,6 +1497,7 @@
> >
> > NULL_CHECK0(cls = FindBootStrapClass(env, "java/lang/String"));
> > NULL_CHECK0(ary = (*env)->NewObjectArray(env, strc, cls, 0));
> > + CHECK_EXCEPTION_RETURN_VALUE(0);
>  
> You will only get a NULL if an exception is pending; conversely you will
> only have an exception pending if the return value is NULL. The new
> check will never execute in a "positive way" and is unnecessary.
>  
> David
> -----
>  
> > for (i = 0; i < strc; i++) {
> > jstring str = NewPlatformString(env, *strv++);
> > NULL_CHECK0(str);
> > diff --git a/src/java.base/share/native/libjli/java.h 
> > b/src/java.base/share/native/libjli/java.h  
> > --- a/src/java.base/share/native/libjli/java.h
> > +++ b/src/java.base/share/native/libjli/java.h
> > @@ -253,6 +253,13 @@
> > #define NULL_CHECK(NC_check_pointer) \
> > NULL_CHECK_RETURN_VALUE(NC_check_pointer, )
> >
> > +#define CHECK_EXCEPTION_RETURN_VALUE(CER_value) \
> > + do { \
> > + if ((*env)->ExceptionOccurred(env)) { \
> > + return CER_value; \
> > + } \
> > + } while (JNI_FALSE)
> > +
> > #define CHECK_EXCEPTION_RETURN() \
> > do { \
> > if ((*env)->ExceptionOccurred(env)) { \
> >
>  

Reply via email to