process_count+=num_processes;
if(!smpi_instances){
- smpi_instances=xbt_dict_new_homogeneous(xbt_free);
+ smpi_instances = xbt_dict_new_homogeneous(xbt_free_f);
}
xbt_dict_set(smpi_instances, name, (void*)instance, NULL);
s_smpi_mpi_instance_t* instance = NULL;
char *name = NULL;
xbt_dict_foreach(smpi_instances, cursor, name, instance) {
- while (smpi_group_unuse(smpi_comm_group(instance->comm_world)) > 0);
+ if(instance->comm_world!=MPI_COMM_NULL)
+ while (smpi_group_unuse(smpi_comm_group(instance->comm_world)) > 0);
xbt_free(instance->comm_world);
xbt_barrier_destroy(instance->finalization_barrier);
}