Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Errhandler : inputs + cleanup
authorAugustin Degomme <adegomme@gmail.com>
Sat, 3 Apr 2021 13:47:51 +0000 (15:47 +0200)
committerAugustin Degomme <adegomme@gmail.com>
Sat, 3 Apr 2021 13:50:12 +0000 (15:50 +0200)
src/smpi/bindings/smpi_pmpi.cpp
src/smpi/bindings/smpi_pmpi_comm.cpp

index 544920a..06567f1 100644 (file)
@@ -246,18 +246,6 @@ int PMPI_Keyval_free(int* keyval) {
   return simgrid::smpi::Keyval::keyval_free<simgrid::smpi::Comm>(keyval);
 }
 
-MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhan){
-  if(errhan==-1)
-    return MPI_ERRHANDLER_NULL;
-  return simgrid::smpi::Errhandler::f2c(errhan);
-}
-
-MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhan){
-  if(errhan==MPI_ERRHANDLER_NULL)
-    return -1;
-  return errhan->c2f();
-}
-
 int PMPI_Buffer_attach(void *buf, int size){
   if(buf==nullptr)
     return MPI_ERR_BUFFER;
index b54e1b4..0e64a85 100644 (file)
@@ -278,7 +278,9 @@ int PMPI_Attr_put(MPI_Comm comm, int keyval, void* attr_value) {
 
 int PMPI_Errhandler_free(MPI_Errhandler* errhandler){
   CHECK_NULL(1, MPI_ERR_ARG, errhandler)
+  CHECK_MPI_NULL(1, MPI_ERRHANDLER_NULL, MPI_ERR_ARG, *errhandler)
   simgrid::smpi::Errhandler::unref(*errhandler);
+  *errhandler = MPI_ERRHANDLER_NULL;
   return MPI_SUCCESS;
 }
 
@@ -311,6 +313,18 @@ int PMPI_Comm_call_errhandler(MPI_Comm comm,int errorcode){
   return MPI_SUCCESS;
 }
 
+MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhan){
+  if(errhan==-1)
+    return MPI_ERRHANDLER_NULL;
+  return simgrid::smpi::Errhandler::f2c(errhan);
+}
+
+MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhan){
+  if(errhan==MPI_ERRHANDLER_NULL)
+    return -1;
+  return errhan->c2f();
+}
+
 int PMPI_Comm_create_errhandler( MPI_Comm_errhandler_fn *function, MPI_Errhandler *errhandler){
   return MPI_Errhandler_create(function, errhandler);
 }