From: Arnaud Giersch Date: Wed, 20 Feb 2013 12:51:46 +0000 (+0100) Subject: Fix a few memory leaks. X-Git-Tag: v3_9_90~484 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/2e6cdac131b649b1ccd7d8e8c5fe85c0dcf57904 Fix a few memory leaks. --- diff --git a/examples/simdag/sd_avail.c b/examples/simdag/sd_avail.c index 096bc08892..00d1aefff2 100644 --- a/examples/simdag/sd_avail.c +++ b/examples/simdag/sd_avail.c @@ -102,7 +102,9 @@ int main(int argc, char **argv) if (SD_task_get_state(task)==SD_DONE) SD_task_destroy(task); } + xbt_dynar_free_container(&changed_tasks); } + xbt_dynar_free_container(&changed_tasks); SD_exit(); return 0; } diff --git a/examples/simdag/sd_comm_throttling.c b/examples/simdag/sd_comm_throttling.c index a2f9f8a065..4a354ae4e2 100644 --- a/examples/simdag/sd_comm_throttling.c +++ b/examples/simdag/sd_comm_throttling.c @@ -77,7 +77,9 @@ int main(int argc, char **argv) */ if (SD_task_get_state(taskC) == SD_DONE) SD_task_set_rate(taskD, 6.25); + xbt_dynar_free_container(&changed_tasks); } + xbt_dynar_free_container(&changed_tasks); XBT_DEBUG("Destroying tasks..."); diff --git a/examples/simdag/sd_fail.c b/examples/simdag/sd_fail.c index e383395735..3ef49eeab5 100644 --- a/examples/simdag/sd_fail.c +++ b/examples/simdag/sd_fail.c @@ -19,6 +19,8 @@ int main(int argc, char **argv) double computation_amount[1]; double communication_amount[2] = { 0 }; SD_workstation_t workstation_list[1]; + xbt_dynar_t ret; + /* initialization of SD */ SD_init(&argc, argv); @@ -37,7 +39,8 @@ int main(int argc, char **argv) SD_task_schedulel(task, 1, SD_workstation_get_by_name("Faulty Host")); - SD_simulate(-1.0); + ret = SD_simulate(-1.0); + xbt_dynar_free(&ret); SD_task_dump(task); @@ -51,7 +54,8 @@ int main(int argc, char **argv) SD_task_schedulel(task, 1, SD_workstation_get_by_name("Safe Host")); XBT_INFO("Run the simulation again"); - SD_simulate(-1.0); + ret = SD_simulate(-1.0); + xbt_dynar_free(&ret); SD_task_dump(task); XBT_INFO("Task '%s' start time: %f, finish time: %f", @@ -77,7 +81,8 @@ int main(int argc, char **argv) SD_task_schedule(task, 1, workstation_list, computation_amount, communication_amount,-1); - SD_simulate(-1.0); + ret = SD_simulate(-1.0); + xbt_dynar_free(&ret); SD_task_dump(task); @@ -95,7 +100,8 @@ int main(int argc, char **argv) computation_amount, communication_amount,-1); XBT_INFO("Run the simulation again"); - SD_simulate(-1.0); + ret = SD_simulate(-1.0); + xbt_dynar_free(&ret); SD_task_dump(task); XBT_INFO("Task '%s' start time: %f, finish time: %f", diff --git a/examples/simdag/sd_seq_access.c b/examples/simdag/sd_seq_access.c index af97771e22..75ab65ce41 100644 --- a/examples/simdag/sd_seq_access.c +++ b/examples/simdag/sd_seq_access.c @@ -83,7 +83,7 @@ int main(int argc, char **argv) while (!xbt_dynar_is_empty(changed_tasks = SD_simulate(-1.0))) { XBT_INFO(" Simulation was suspended, check workstation states"); for (i = 0; i < 2; i++) { - SD_workstation_dump(workstations[i]); + SD_workstation_dump(workstations[i]); } xbt_dynar_free(&changed_tasks); } @@ -94,6 +94,7 @@ int main(int argc, char **argv) SD_task_destroy(taskA); SD_task_destroy(taskB); SD_task_destroy(taskC); + SD_task_destroy(taskD); XBT_DEBUG("Tasks destroyed. Exiting SimDag..."); diff --git a/examples/simdag/sd_typed_tasks_test.c b/examples/simdag/sd_typed_tasks_test.c index 248c4d4796..b8ccbfaf61 100644 --- a/examples/simdag/sd_typed_tasks_test.c +++ b/examples/simdag/sd_typed_tasks_test.c @@ -92,7 +92,7 @@ int main(int argc, char **argv) SD_task_get_start_time(task), SD_task_get_finish_time(task)); SD_task_destroy(task); } - + xbt_dynar_free_container(&changed_tasks); SD_exit(); return 0; } diff --git a/examples/simdag/simdag_trace.c b/examples/simdag/simdag_trace.c index 7452e70eb4..0cdc4302c6 100644 --- a/examples/simdag/simdag_trace.c +++ b/examples/simdag/simdag_trace.c @@ -124,6 +124,7 @@ int main(int argc, char **argv) } xbt_dynar_free_container(&changed_tasks); } + xbt_dynar_free_container(&changed_tasks); XBT_DEBUG("Destroying tasks..."); diff --git a/include/instr/jedule/jedule_sd_binding.h b/include/instr/jedule/jedule_sd_binding.h index cdd132b4c9..74c3cb39f9 100644 --- a/include/instr/jedule/jedule_sd_binding.h +++ b/include/instr/jedule/jedule_sd_binding.h @@ -24,6 +24,8 @@ void jedule_sd_init(void); void jedule_sd_cleanup(void); +void jedule_sd_exit(void); + void jedule_sd_dump(void); #endif /* JEDULE_SD_BINDING_H_ */ diff --git a/src/instr/jedule/jedule_events.c b/src/instr/jedule/jedule_events.c index 2edc2340f6..489cdc72f6 100644 --- a/src/instr/jedule/jedule_events.c +++ b/src/instr/jedule/jedule_events.c @@ -61,7 +61,7 @@ void create_jed_event(jed_event_t *event, char *name, double start_time, (*event)->type = xbt_strdup(type); - (*event)->resource_subsets = xbt_dynar_new(sizeof(jed_res_subset_t), NULL); + (*event)->resource_subsets = xbt_dynar_new(sizeof(jed_res_subset_t), xbt_free_ref); (*event)->characteristics_list = xbt_dynar_new(sizeof(char*), NULL); (*event)->info_hash = xbt_dict_new_homogeneous(NULL); diff --git a/src/instr/jedule/jedule_output.c b/src/instr/jedule/jedule_output.c index 0099ce6d75..401b09b7c8 100644 --- a/src/instr/jedule/jedule_output.c +++ b/src/instr/jedule/jedule_output.c @@ -175,12 +175,12 @@ static void print_event(jed_event_t event) { int start = subset->start_idx; int end = subset->start_idx + subset->nres - 1; - char resid[1024]; + char resid[1024]; - get_hierarchy_string(subset->parent, resid); + get_hierarchy_string(subset->parent, resid); fprintf(jed_file, "