From: agiersch Date: Wed, 1 Dec 2010 22:00:44 +0000 (+0000) Subject: Fix a memory leak in SD_task_schedule. X-Git-Tag: v3.6_beta2~1066 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/721b70026fdf54eeeba977bcfb6fcc360d919fbe 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 --- 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);