From: Paul Bédaride Date: Wed, 23 Jan 2013 14:19:30 +0000 (+0100) Subject: Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid X-Git-Tag: v3_9_rc1~67 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/2ddaad87cbb9584159fd9ea054a4dd0dbf1224b2?hp=cae4f3ce3a29af78349034eaa7206185fa66ebef Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid --- diff --git a/src/simdag/sd_dotloader.c b/src/simdag/sd_dotloader.c index e198f62aa3..60b9f7517f 100644 --- a/src/simdag/sd_dotloader.c +++ b/src/simdag/sd_dotloader.c @@ -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.", diff --git a/src/simdag/sd_global.c b/src/simdag/sd_global.c index a2789bcd8a..34c9939834 100644 --- a/src/simdag/sd_global.c +++ b/src/simdag/sd_global.c @@ -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); diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 2957509b3a..058e3bfb25 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -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*