Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authorPaul Bédaride <paul.bedaride@gmail.com>
Wed, 23 Jan 2013 14:19:30 +0000 (15:19 +0100)
committerPaul Bédaride <paul.bedaride@gmail.com>
Wed, 23 Jan 2013 14:19:30 +0000 (15:19 +0100)
src/simdag/sd_dotloader.c
src/simdag/sd_global.c
src/simdag/sd_task.c

index e198f62..60b9f75 100644 (file)
@@ -261,6 +261,7 @@ xbt_dynar_t SD_PTG_dotload(const char * filename)
 
   /* Free previous copy of the files */
   xbt_dict_free(&files);
+  xbt_dict_free(&computers);
   fclose(in_file);
   if (!acyclic_graph_detail(result)) {
     XBT_ERROR("The DOT described in %s is not a DAG. It contains a cycle.",
index a2789bc..34c9939 100644 (file)
@@ -132,12 +132,12 @@ void SD_application_reinit(void)
   xbt_swag_foreach_safe(done_task, next_done_task, sd_global->done_task_set){
     if (xbt_dynar_is_empty(done_task->tasks_before)){
       __SD_task_set_state(done_task, SD_SCHEDULABLE);
-   } else{
+    } else{
       __SD_task_set_state(done_task, SD_NOT_SCHEDULED);
       done_task->unsatisfied_dependencies =
         xbt_dynar_length(done_task->tasks_before);
       done_task->is_not_ready = done_task->unsatisfied_dependencies;
-   }
+    }
   }
 
   xbt_swag_free(sd_global->done_task_set);
index 2957509..058e3bf 100644 (file)
@@ -1386,9 +1386,10 @@ void SD_task_distribute_comp_amdhal(SD_task_t task, int ws_count)
               "Task %s is not a SD_TASK_COMP_PAR_AMDAHL typed task."
               "Cannot use this function.",
               SD_task_get_name(task));  
-              
   task->computation_amount = xbt_new0(double, ws_count);
   task->communication_amount = xbt_new0(double, ws_count * ws_count);
+  if (task->workstation_list)
+    xbt_free(task->workstation_list);
   task->workstation_nb = ws_count;
   task->workstation_list = xbt_new0(SD_workstation_t, ws_count);
   
@@ -1538,6 +1539,10 @@ void SD_task_schedulev(SD_task_t task, int count,
                task->workstation_list[i];
 
           before->workstation_nb += count;
+          if (before->computation_amount)
+            xbt_free(before->computation_amount);
+          if (before->communication_amount)
+            xbt_free(before->communication_amount);
 
           before->computation_amount = xbt_new0(double,
                                                 before->workstation_nb);
@@ -1603,6 +1608,11 @@ void SD_task_schedulev(SD_task_t task, int count,
 
           after->workstation_nb += count;
 
+          if (after->computation_amount)
+            xbt_free(after->computation_amount);
+          if (after->communication_amount)
+            xbt_free(after->communication_amount);
+
           after->computation_amount = xbt_new0(double, after->workstation_nb);
           after->communication_amount = xbt_new0(double,
                                                  after->workstation_nb*