From: mquinson Date: Thu, 15 Oct 2009 16:25:17 +0000 (+0000) Subject: plug various memleaks X-Git-Tag: SVN~926 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/b61fd75d5de007848291c118e37bfe6aa3aa3fa9?hp=907ffb649d0e444a20162cb7696ad3523248f4b0 plug various memleaks git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6788 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/simdag/dax/dax_test.c b/examples/simdag/dax/dax_test.c index d4093d548c..04b2a7d468 100644 --- a/examples/simdag/dax/dax_test.c +++ b/examples/simdag/dax/dax_test.c @@ -85,7 +85,8 @@ int main(int argc, char **argv) { } INFO0("------------------- Run the schedule ---------------------------"); - SD_simulate(-1); + SD_task_t *changed = SD_simulate(-1); + free(changed); INFO0("------------------- Produce the trace file---------------------------"); INFO1("Producing the trace of the run into %s",tracefilename); FILE*out = fopen(tracefilename,"w"); @@ -112,6 +113,7 @@ int main(int argc, char **argv) { default: xbt_die(bprintf("Task %s is of unknown kind %d",SD_task_get_name(task),SD_task_get_kind(task))); } + SD_task_destroy(task); } fclose(out); diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 03c33f93c4..4d91e4bccb 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -324,7 +324,7 @@ void SD_task_dump(SD_task_t task) void SD_task_dotty(SD_task_t task,void* out) { unsigned int counter; SD_dependency_t dependency; - fprintf(out, " T%ld [label=\"%.20s\"",(unsigned long int)task, task->name); + fprintf(out, " T%p [label=\"%.20s\"",task, task->name); switch(task->kind){ case SD_TASK_COMM_E2E: fprintf(out,", shape=box"); @@ -332,6 +332,8 @@ void SD_task_dotty(SD_task_t task,void* out) { case SD_TASK_COMP_SEQ: fprintf(out,", shape=circle"); break; + default: + xbt_die("Unknown task type!"); } fprintf(out,"];\n"); xbt_dynar_foreach(task->tasks_before,counter,dependency) { @@ -772,6 +774,7 @@ static void __SD_task_destroy_scheduling_data(SD_task_t task) xbt_free(task->computation_amount); xbt_free(task->communication_amount); + task->computation_amount = task->communication_amount = NULL; } /* Runs a task. This function is directly called by __SD_task_try_to_run if the task @@ -1163,6 +1166,12 @@ void SD_task_destroy(SD_task_t task) if (task->workstation_list != NULL) xbt_free(task->workstation_list); + if (task->communication_amount) + xbt_free(task->communication_amount); + + if (task->computation_amount) + xbt_free(task->computation_amount); + xbt_dynar_free(&task->tasks_before); xbt_dynar_free(&task->tasks_after); xbt_free(task);