A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a memory leak in SD_task_schedule.
[simgrid.git]
/
src
/
simdag
/
sd_task.c
diff --git
a/src/simdag/sd_task.c
b/src/simdag/sd_task.c
index
74f3060
..
6d61f43
100644
(file)
--- 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->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 {
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->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 {
memcpy(task->communication_amount, communication_amount,
sizeof(double) * communication_nb);
} else {
+ xbt_free(task->communication_amount);
task->communication_amount = NULL;
}
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);
memcpy(task->workstation_list, workstation_list,
sizeof(SD_workstation_t) * workstation_count);