Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : move functions about snapshot comparison in a separate file mc_compare.c
[simgrid.git] / src / simix / smx_host.c
index 1d41473..a247d60 100644 (file)
@@ -179,12 +179,7 @@ void _SIMIX_host_free_process_arg(void *);
 void _SIMIX_host_free_process_arg(void *data)
 {
   smx_process_arg_t arg = *(void**)data;
-  int i;
   xbt_free(arg->name);
-  for (i = 0; i < arg->argc; i++) {
-    xbt_free(arg->argv[i]);
-  }
-  xbt_free(arg->argv);
   xbt_free(arg);
 }
 /**
@@ -208,19 +203,20 @@ void SIMIX_host_add_auto_restart_process(smx_host_t host,
     host->auto_restart_processes = xbt_dynar_new(sizeof(smx_process_arg_t),_SIMIX_host_free_process_arg);
   }
   smx_process_arg_t arg = xbt_new(s_smx_process_arg_t,1);
-
   arg->name = xbt_strdup(name);
   arg->code = code;
   arg->data = data;
   arg->hostname = hostname;
   arg->kill_time = kill_time;
   arg->argc = argc;
+
   arg->argv = xbt_new(char*,argc + 1);
 
   int i;
   for (i = 0; i < argc; i++) {
     arg->argv[i] = xbt_strdup(argv[i]);
   }
+  arg->argv[argc] = NULL;
 
   arg->properties = properties;
   arg->auto_restart = auto_restart;
@@ -358,19 +354,14 @@ smx_action_t SIMIX_host_parallel_execute( const char *name,
 
 void SIMIX_host_execution_destroy(smx_action_t action)
 {
-  int destroyed=0;
   XBT_DEBUG("Destroy action %p", action);
 
-
   if (action->execution.surf_exec) {
-    destroyed = surf_workstation_model->action_unref(action->execution.surf_exec);
+    surf_workstation_model->action_unref(action->execution.surf_exec);
     action->execution.surf_exec = NULL;
   }
-
-  if (destroyed) {
-    xbt_free(action->name);
-    xbt_mallocator_release(simix_global->action_mallocator, action);
-  }
+  xbt_free(action->name);
+  xbt_mallocator_release(simix_global->action_mallocator, action);
 }
 
 void SIMIX_host_execution_cancel(smx_action_t action)