1111 *                         All rights reserved. 
1212 * Copyright (c) 2015      Research Organization for Information Science 
1313 *                         and Technology (RIST). All rights reserved. 
14+  * Copyright (c) 2016      Los Alamos National Security, LLC. All rights 
15+  *                         reserved. 
1416 * $COPYRIGHT$ 
1517 * 
1618 * Additional copyrights may follow 
@@ -205,7 +207,10 @@ JNIEXPORT jlongArray JNICALL Java_mpi_Comm_iDup(
205207    MPI_Comm  newcomm ;
206208    MPI_Request  request ;
207209    int  rc  =  MPI_Comm_idup ((MPI_Comm )comm , & newcomm , & request );
208-     ompi_java_exceptionCheck (env , rc );
210+     
211+     if (ompi_java_exceptionCheck (env , rc ))
212+         return  NULL ;
213+     
209214    jlongArray  jcr  =  (* env )-> NewLongArray (env , 2 );
210215    jlong  * cr  =  (jlong * )(* env )-> GetPrimitiveArrayCritical (env , jcr , NULL );
211216    cr [0 ] =  (jlong )newcomm ;
@@ -332,6 +337,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
332337        jobject  buf , jboolean  db , jint  offset , jint  count ,
333338        jlong  jType , jint  bType , jint  source , jint  tag , jlongArray  jStatus )
334339{
340+     jboolean  exception ;
335341    MPI_Comm      comm  =  (MPI_Comm )jComm ;
336342    MPI_Datatype  type  =  (MPI_Datatype )jType ;
337343
@@ -341,10 +347,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
341347
342348    MPI_Status  status ;
343349    int  rc  =  MPI_Recv (ptr , count , type , source , tag , comm , & status );
344-     ompi_java_exceptionCheck (env , rc );
350+     exception   =   ompi_java_exceptionCheck (env , rc );
345351
346352    ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
347-     ompi_java_status_set (env , jStatus , & status );
353+     
354+     if (!exception )
355+         ompi_java_status_set (env , jStatus , & status );
348356}
349357
350358JNIEXPORT  void  JNICALL  Java_mpi_Comm_sendRecv (
@@ -355,6 +363,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
355363        jlong  rjType , jint  rBType , jint  source , jint  rTag ,
356364        jlongArray  jStatus )
357365{
366+     jboolean  exception ;
358367    MPI_Comm      comm   =  (MPI_Comm )jComm ;
359368    MPI_Datatype  sType  =  (MPI_Datatype )sjType ;
360369    MPI_Datatype  rType  =  (MPI_Datatype )rjType ;
@@ -369,10 +378,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
369378    int  rc  =  MPI_Sendrecv (sPtr , sCount , sType , dest , sTag ,
370379                          rPtr , rCount , rType , source , rTag , comm , & status );
371380
372-     ompi_java_exceptionCheck (env , rc );
381+     exception   =   ompi_java_exceptionCheck (env , rc );
373382    ompi_java_releaseReadPtr (sPtr , sItem , sBuf , sdb );
374383    ompi_java_releaseWritePtr (rPtr ,rItem ,env ,rBuf ,rdb ,rOff ,rCount ,rType ,rBType );
375-     ompi_java_status_set (env , jStatus , & status );
384+     
385+     if (!exception )
386+         ompi_java_status_set (env , jStatus , & status );
376387}
377388
378389JNIEXPORT  void  JNICALL  Java_mpi_Comm_sendRecvReplace (
@@ -392,8 +403,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecvReplace(
392403    int  rc  =  MPI_Sendrecv_replace (ptr , count , type , dest ,
393404                                  sTag , source , rTag , comm , & status );
394405
395-     ompi_java_exceptionCheck (env , rc );
396-     ompi_java_status_set (env , jStatus , & status );
406+     if (!ompi_java_exceptionCheck (env , rc ))
407+         ompi_java_status_set (env , jStatus , & status );
408+ 
397409    ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
398410}
399411
@@ -662,8 +674,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_probe(
662674{
663675    MPI_Status  status ;
664676    int  rc  =  MPI_Probe (source , tag , (MPI_Comm )comm , & status );
665-     ompi_java_exceptionCheck (env , rc );
666-     ompi_java_status_set (env , jStatus , & status );
677+     
678+     if (!ompi_java_exceptionCheck (env , rc ))
679+         ompi_java_status_set (env , jStatus , & status );
667680}
668681
669682JNIEXPORT  jint  JNICALL  Java_mpi_Comm_getTopology (
0 commit comments