From 721b70026fdf54eeeba977bcfb6fcc360d919fbe Mon Sep 17 00:00:00 2001 From: agiersch Date: Wed, 1 Dec 2010 22:00:44 +0000 Subject: [PATCH] Fix a memory leak in SD_task_schedule. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8846 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/simdag/sd_task.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 74f30604b2..6d61f4391e 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -763,23 +763,29 @@ void SD_task_schedule(SD_task_t task, int workstation_count, task->rate = rate; if (computation_amount) { - task->computation_amount = xbt_new(double, workstation_count); + task->computation_amount = xbt_realloc(task->computation_amount, + sizeof(double) * workstation_count); memcpy(task->computation_amount, computation_amount, sizeof(double) * workstation_count); } else { + xbt_free(task->computation_amount); task->computation_amount = NULL; } communication_nb = workstation_count * workstation_count; if (communication_amount) { - task->communication_amount = xbt_new(double, communication_nb); + task->communication_amount = xbt_realloc(task->communication_amount, + sizeof(double) * communication_nb); memcpy(task->communication_amount, communication_amount, sizeof(double) * communication_nb); } else { + xbt_free(task->communication_amount); task->communication_amount = NULL; } - task->workstation_list = xbt_new(SD_workstation_t, workstation_count); + task->workstation_list = + xbt_realloc(task->workstation_list, + sizeof(SD_workstation_t) * workstation_count); memcpy(task->workstation_list, workstation_list, sizeof(SD_workstation_t) * workstation_count); -- 2.20.1