@@ -205,7 +205,10 @@ JNIEXPORT jlongArray JNICALL Java_mpi_Comm_iDup(
205
205
MPI_Comm newcomm ;
206
206
MPI_Request request ;
207
207
int rc = MPI_Comm_idup ((MPI_Comm )comm , & newcomm , & request );
208
- ompi_java_exceptionCheck (env , rc );
208
+
209
+ if (ompi_java_exceptionCheck (env , rc ))
210
+ return NULL ;
211
+
209
212
jlongArray jcr = (* env )-> NewLongArray (env , 2 );
210
213
jlong * cr = (jlong * )(* env )-> GetPrimitiveArrayCritical (env , jcr , NULL );
211
214
cr [0 ] = (jlong )newcomm ;
@@ -332,6 +335,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
332
335
jobject buf , jboolean db , jint offset , jint count ,
333
336
jlong jType , jint bType , jint source , jint tag , jlongArray jStatus )
334
337
{
338
+ jboolean exception ;
335
339
MPI_Comm comm = (MPI_Comm )jComm ;
336
340
MPI_Datatype type = (MPI_Datatype )jType ;
337
341
@@ -341,10 +345,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
341
345
342
346
MPI_Status status ;
343
347
int rc = MPI_Recv (ptr , count , type , source , tag , comm , & status );
344
- ompi_java_exceptionCheck (env , rc );
348
+ exception = ompi_java_exceptionCheck (env , rc );
345
349
346
350
ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
347
- ompi_java_status_set (env , jStatus , & status );
351
+
352
+ if (!exception )
353
+ ompi_java_status_set (env , jStatus , & status );
348
354
}
349
355
350
356
JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv (
@@ -355,6 +361,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
355
361
jlong rjType , jint rBType , jint source , jint rTag ,
356
362
jlongArray jStatus )
357
363
{
364
+ jboolean exception ;
358
365
MPI_Comm comm = (MPI_Comm )jComm ;
359
366
MPI_Datatype sType = (MPI_Datatype )sjType ;
360
367
MPI_Datatype rType = (MPI_Datatype )rjType ;
@@ -369,10 +376,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
369
376
int rc = MPI_Sendrecv (sPtr , sCount , sType , dest , sTag ,
370
377
rPtr , rCount , rType , source , rTag , comm , & status );
371
378
372
- ompi_java_exceptionCheck (env , rc );
379
+ exception = ompi_java_exceptionCheck (env , rc );
373
380
ompi_java_releaseReadPtr (sPtr , sItem , sBuf , sdb );
374
381
ompi_java_releaseWritePtr (rPtr ,rItem ,env ,rBuf ,rdb ,rOff ,rCount ,rType ,rBType );
375
- ompi_java_status_set (env , jStatus , & status );
382
+
383
+ if (!exception )
384
+ ompi_java_status_set (env , jStatus , & status );
376
385
}
377
386
378
387
JNIEXPORT void JNICALL Java_mpi_Comm_sendRecvReplace (
@@ -392,8 +401,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecvReplace(
392
401
int rc = MPI_Sendrecv_replace (ptr , count , type , dest ,
393
402
sTag , source , rTag , comm , & status );
394
403
395
- ompi_java_exceptionCheck (env , rc );
396
- ompi_java_status_set (env , jStatus , & status );
404
+ if (!ompi_java_exceptionCheck (env , rc ))
405
+ ompi_java_status_set (env , jStatus , & status );
406
+
397
407
ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
398
408
}
399
409
@@ -662,8 +672,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_probe(
662
672
{
663
673
MPI_Status status ;
664
674
int rc = MPI_Probe (source , tag , (MPI_Comm )comm , & status );
665
- ompi_java_exceptionCheck (env , rc );
666
- ompi_java_status_set (env , jStatus , & status );
675
+
676
+ if (!ompi_java_exceptionCheck (env , rc ))
677
+ ompi_java_status_set (env , jStatus , & status );
667
678
}
668
679
669
680
JNIEXPORT jint JNICALL Java_mpi_Comm_getTopology (
0 commit comments