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>
Этот коммит содержится в:
родитель
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)
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user