Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fail when trying to attach a buffer if one is already attached
authorAugustin Degomme <adegomme@gmail.com>
Fri, 2 Apr 2021 15:28:48 +0000 (17:28 +0200)
committerAugustin Degomme <adegomme@gmail.com>
Fri, 2 Apr 2021 18:03:31 +0000 (20:03 +0200)
src/smpi/bindings/smpi_pmpi.cpp
src/smpi/include/smpi_actor.hpp
src/smpi/internals/smpi_actor.cpp

index 4b2a1a9..1e59cd8 100644 (file)
@@ -252,12 +252,10 @@ int PMPI_Buffer_attach(void *buf, int size){
     return MPI_ERR_BUFFER;
   if(size<0)
     return MPI_ERR_ARG;
-  smpi_process()->set_bsend_buffer(buf, size);
-  return MPI_SUCCESS;
+  return smpi_process()->set_bsend_buffer(buf, size);
 }
 
 int PMPI_Buffer_detach(void* buffer, int* size){
   smpi_process()->bsend_buffer((void**)buffer, size);
-  smpi_process()->set_bsend_buffer(nullptr, 0);
-  return MPI_SUCCESS;
+  return smpi_process()->set_bsend_buffer(nullptr, 0);
 }
index 73092b6..3da3086 100644 (file)
@@ -86,7 +86,7 @@ public:
   void set_optind(int optind);
   MPI_Info info_env();
   void bsend_buffer(void** buf, int* size);
-  void set_bsend_buffer(void* buf, int size);
+  int set_bsend_buffer(void* buf, int size);
 };
 
 } // namespace smpi
index d97e4e1..10f3f99 100644 (file)
@@ -257,10 +257,13 @@ void ActorExt::bsend_buffer(void** buf, int* size)
   *size = bsend_buffer_size_;
 }
 
-void ActorExt::set_bsend_buffer(void* buf, int size)
+int ActorExt::set_bsend_buffer(void* buf, int size)
 {
+  if(buf!=nullptr && bsend_buffer_!=nullptr)
+    return MPI_ERR_BUFFER;
   bsend_buffer_     = buf;
   bsend_buffer_size_= size;
+  return MPI_SUCCESS;
 }
 
 } // namespace smpi