Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DOC] Fixed even more errors.
[simgrid.git] / src / smpi / smpi_deployment.c
index 83714ad..30df611 100644 (file)
@@ -49,7 +49,7 @@ void SMPI_app_instance_register(const char *name, xbt_main_func_t code, int num_
   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);
@@ -87,10 +87,11 @@ void smpi_deployment_cleanup_instances(){
   xbt_dict_cursor_t cursor = NULL;
   s_smpi_mpi_instance_t* instance = NULL;
   char *name = NULL;
-  xbt_dict_foreach((xbt_dict_t) smpi_instances, cursor, name, instance) {
-    while (smpi_group_unuse(smpi_comm_group(instance->comm_world)) > 0);
+  xbt_dict_foreach(smpi_instances, cursor, name, instance) {
+    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);
   }
+  xbt_dict_free(&smpi_instances);
 }
-