From b162f038e6f19cb564dfdb9de895c9f9394fd242 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Tue, 3 Jul 2012 12:15:34 +0200 Subject: [PATCH] Fix free function for dynar, and simplify the code at the end of the function. --- src/simdag/sd_dotloader.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/simdag/sd_dotloader.c b/src/simdag/sd_dotloader.c index 7c440894ff..9402eaa366 100644 --- a/src/simdag/sd_dotloader.c +++ b/src/simdag/sd_dotloader.c @@ -89,6 +89,12 @@ static void dot_task_free(void *task) SD_task_destroy(t); } +static void dot_task_p_free(void *task) +{ + SD_task_t *t = task; + SD_task_destroy(*t); +} + static void TRACE_sd_dotloader (SD_task_t task, const char *category) { if (category){ @@ -165,7 +171,7 @@ xbt_dynar_t SD_dotload_generic(const char * filename) FILE *in_file = fopen(filename, "r"); dag_dot = agread(in_file, NIL(Agdisc_t *)); - result = xbt_dynar_new(sizeof(SD_task_t), dot_task_free); + result = xbt_dynar_new(sizeof(SD_task_t), dot_task_p_free); files = xbt_dict_new_homogeneous(&dot_task_free); jobs = xbt_dict_new_homogeneous(NULL); computers = xbt_dict_new_homogeneous(NULL); @@ -237,17 +243,13 @@ xbt_dynar_t SD_dotload_generic(const char * filename) /* Free previous copy of the files */ xbt_dict_free(&files); fclose(in_file); - if(acyclic_graph_detail(result)) - return result; - else { - unsigned int cpt; + if (!acyclic_graph_detail(result)) { XBT_ERROR("The DOT described in %s is not a DAG. It contains a cycle.", basename((char*)filename)); - xbt_dynar_foreach(result, cpt, file) - SD_task_destroy(file); - xbt_dynar_free_container(&result); + xbt_dynar_free(&result); + /* (result == NULL) here */ } - return NULL; + return result; } /* dot_add_task create a sd_task and all transfers required for this -- 2.20.1