Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add initialization/finalization check at each call.
[simgrid.git] / src / smpi / bindings / smpi_pmpi_group.cpp
index a3d3798..eb8a2d7 100644 (file)
@@ -140,7 +140,9 @@ int PMPI_Group_excl(MPI_Group group, int n, const int *ranks, MPI_Group * newgro
     return MPI_ERR_ARG;
   } else if (n == 0) {
     *newgroup = group;
-    if (group != MPI_COMM_WORLD->group() && group != MPI_COMM_SELF->group() && group != MPI_GROUP_EMPTY)
+    if (group != MPI_GROUP_EMPTY &&
+        group != MPI_COMM_WORLD->group() &&
+        ((smpi_process()->comm_self_is_set()) || (group != MPI_COMM_SELF->group())))
       group->ref();
     return MPI_SUCCESS;
   } else if (n == group->size()) {
@@ -200,8 +202,9 @@ int PMPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group * n
   }
   if (n == 0) {
     *newgroup = group;
-    if (group != MPI_COMM_WORLD->group() && group != MPI_COMM_SELF->group() &&
-        group != MPI_GROUP_EMPTY)
+    if (group != MPI_GROUP_EMPTY &&
+        group != MPI_COMM_WORLD->group() &&
+        ((smpi_process()->comm_self_is_set()) || (group != MPI_COMM_SELF->group())))
       group->ref();
     return MPI_SUCCESS;
   } else {