*ierr = MPI_Group_incl(simgrid::smpi::Group::f2c(*group), *n, ranks, &tmp);
if(*ierr == MPI_SUCCESS) {
- *group_out = tmp->add_f();
+ *group_out = tmp->c2f();
}
}
}
void mpi_get_processor_name_(char *name, int *resultlen, int* ierr){
+ //fortran does not handle string endings cleanly, so initialize everything before
+ memset(name, 0, MPI_MAX_PROCESSOR_NAME);
*ierr = MPI_Get_processor_name(name, resultlen);
}
}
void mpi_group_free_ (int* group, int* ierr){
- MPI_Group tmp = simgrid::smpi::Group::f2c(*group);
- *ierr = MPI_Group_free(&tmp);
- if(*ierr == MPI_SUCCESS) {
- simgrid::smpi::F2C::free_f(*group);
- }
+ MPI_Group tmp = simgrid::smpi::Group::f2c(*group);
+ if(tmp != MPI_COMM_WORLD->group() && tmp != MPI_GROUP_EMPTY){
+ simgrid::smpi::Group::unref(tmp);
+ simgrid::smpi::F2C::free_f(*group);
+ }
+ *ierr = MPI_SUCCESS;
}
void mpi_group_size_ (int* group, int *size, int* ierr){