From 1db7c7ef64279ee426f94b218218df87f7bd4d83 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Tue, 2 Apr 2019 15:22:52 +0200
Subject: [PATCH] Fix MPI_Waitall call in the case of empty processors

This allows to plug the synchronization in ConnectivityDispatcher::_buildNewOwner
---
 src/mesh/ConnectivityDispatcher.cpp |  3 +--
 src/utils/Messenger.hpp             | 14 ++++++++------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp
index 7ac1dbb39..f31fd9e6a 100644
--- a/src/mesh/ConnectivityDispatcher.cpp
+++ b/src/mesh/ConnectivityDispatcher.cpp
@@ -41,8 +41,7 @@ ConnectivityDispatcher<Dimension>::_buildNewOwner()
         item_new_owner[l] = cell_new_owner[Jmin];
       });
 
-#warning Add missing synchronize (fix it!)
-    // synchronize(face_new_owner);
+    synchronize(item_new_owner);
     this->_dispatchedInfo<item_type>().m_new_owner = item_new_owner;
   }
 }
diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index 1575c4441..1e32874a7 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -231,12 +231,14 @@ class Messenger
       }
     }
 
-    std::vector<MPI_Status> status_list(request_list.size());
-    if (MPI_SUCCESS != MPI_Waitall(request_list.size(), &(request_list[0]), &(status_list[0]))) {
-      // LCOV_EXCL_START
-      std::cerr << "Communication error!\n";
-      std::exit(1);
-      // LCOV_EXCL_STOP
+    if (request_list.size()>0) {
+      std::vector<MPI_Status> status_list(request_list.size());
+      if (MPI_SUCCESS != MPI_Waitall(request_list.size(), &(request_list[0]), &(status_list[0]))) {
+        // LCOV_EXCL_START
+        std::cerr << "Communication error!\n";
+        std::exit(1);
+        // LCOV_EXCL_STOP
+      }
     }
 
 #else // PASTIS_HAS_MPI
-- 
GitLab