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()) {
}
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 {