1
1

Java bindings exception handling fix

Fixed an error where if there were no MPI exceptions, a
JNI error could still exist and not get handled.

Signed-off-by: Nathaniel Graham <nrgraham23@gmail.com>
Этот коммит содержится в:
Nathaniel Graham 2016-06-19 17:49:45 +02:00
родитель d58da99dbc
Коммит 88dea4e4de

Просмотреть файл

@ -1124,6 +1124,8 @@ void ompi_java_releasePtrArray(JNIEnv *env, jlongArray array,
jboolean ompi_java_exceptionCheck(JNIEnv *env, int rc)
{
jboolean jni_exception;
if (rc < 0) {
/* handle ompi error code */
rc = ompi_errcode_get_mpi_code (rc);
@ -1131,16 +1133,13 @@ jboolean ompi_java_exceptionCheck(JNIEnv *env, int rc)
* all Open MPI MPI error codes should be > 0. */
assert (rc >= 0);
}
jni_exception = (*env)->ExceptionCheck(env);
if(MPI_SUCCESS == rc)
if(MPI_SUCCESS == rc && JNI_FALSE == jni_exception)
{
return JNI_FALSE;
}
else if((*env)->ExceptionCheck(env))
{
return JNI_TRUE;
}
else
else if(MPI_SUCCESS != rc)
{
int errClass = ompi_mpi_errcode_get_class(rc);
char *message = ompi_mpi_errnum_get_string(rc);
@ -1154,6 +1153,9 @@ jboolean ompi_java_exceptionCheck(JNIEnv *env, int rc)
(*env)->DeleteLocalRef(env, jmessage);
return JNI_TRUE;
}
else if (JNI_TRUE == jni_exception) {
return JNI_TRUE;
}
}
void* ompi_java_attrSet(JNIEnv *env, jbyteArray jval)