Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add a name() to all F2C objects.
[simgrid.git] / src / smpi / mpi / smpi_request.cpp
index 18df5f8f9a33179609d6c7ae3beebc3c76e85baf..c1a6de0dc15b785097d3e7675cdbb51ee701d4da 100644 (file)
@@ -9,6 +9,8 @@
 #include "private.hpp"
 #include "simgrid/Exception.hpp"
 #include "simgrid/s4u/Exec.hpp"
+#include "simgrid/s4u/Mutex.hpp"
+#include "simgrid/s4u/ConditionVariable.hpp"
 #include "smpi_comm.hpp"
 #include "smpi_datatype.hpp"
 #include "smpi_host.hpp"
@@ -91,7 +93,7 @@ void Request::unref(MPI_Request* request)
       Op::unref(&(*request)->op_);
 
     (*request)->print_request("Destroying");
-    F2C::free_f((*request)->c2f());
+    F2C::free_f((*request)->f2c_id());
     delete *request;
     *request = MPI_REQUEST_NULL;
   } else {
@@ -117,9 +119,13 @@ bool Request::match_common(MPI_Request req, MPI_Request sender, MPI_Request rece
       receiver->real_src_ = sender->src_;
     if (receiver->tag_ == MPI_ANY_TAG)
       receiver->real_tag_ = sender->tag_;
-    if (receiver->real_size_ < sender->real_size_ && ((receiver->flags_ & MPI_REQ_PROBE) == 0 )){
-      XBT_DEBUG("Truncating message - should not happen: receiver size : %zu < sender size : %zu", receiver->real_size_, sender->real_size_);
-      receiver->truncated_ = true;
+    if ((receiver->flags_ & MPI_REQ_PROBE) == 0 ){
+      if (receiver->real_size_ < sender->real_size_){
+        XBT_DEBUG("Truncating message - should not happen: receiver size : %zu < sender size : %zu", receiver->real_size_, sender->real_size_);
+        receiver->truncated_ = true;
+      } else if (receiver->real_size_ > sender->real_size_){
+        receiver->real_size_=sender->real_size_;
+      }
     }
     if (sender->detached_)
       receiver->detached_sender_ = sender; // tie the sender to the receiver, as it is detached and has to be freed in