X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3306173adf8a11cb32a60a7636181a230a7104ee..ecc321240ca692a825b2223dba57172ed04d74b7:/src/surf/surfxml_parse.c diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index d8874a58fa..2186a8602a 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -228,8 +228,6 @@ void STag_surfxml_platform(void) "is available in the contrib/platform_generation directory " "of the simgrid repository."); - if (set_list == NULL) set_list = xbt_dict_new(); - surfxml_call_cb_functions(STag_surfxml_platform_cb_list); } @@ -506,7 +504,7 @@ static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) } static void parse_route_set_endpoints(void) { - route_link_list = xbt_dynar_new(sizeof(char *), &xbt_free_ref); + route_link_list = xbt_dynar_new(sizeof(char *), NULL); } static void init_data(void) @@ -518,7 +516,8 @@ static void init_data(void) route_multi_table = xbt_dict_new(); route_multi_elements = xbt_dynar_new(sizeof(char*), NULL); traces_set_list = xbt_dict_new(); - + if (set_list == NULL) set_list = xbt_dict_new(); + trace_connect_list_host_avail = xbt_dict_new(); trace_connect_list_power = xbt_dict_new(); trace_connect_list_link_avail = xbt_dict_new(); @@ -553,6 +552,16 @@ static void free_data(void) xbt_dict_free(&route_table); route_link_list = NULL; + xbt_dict_foreach(set_list, cursor, key, data) { + xbt_dynar_t set = (xbt_dynar_t)data; + char *name; + unsigned int cpt = 0; + + xbt_dynar_foreach (set, cpt, name) free(name); + xbt_dynar_free(&set); + } + xbt_dict_free(&set_list); + xbt_dict_free(&trace_connect_list_host_avail); xbt_dict_free(&trace_connect_list_power); xbt_dict_free(&trace_connect_list_link_avail); @@ -832,6 +841,7 @@ void manage_route(xbt_dict_t routing_table, const char *route_name, int action, xbt_dynar_foreach(links, cpt, value) { xbt_dynar_push(route_link_list,&value); } + xbt_dynar_free(&links); break; case A_surfxml_route_action_POSTPEND: /* add existing links in front; links + route_link_list */ xbt_dynar_foreach(route_link_list, cpt, value) { @@ -841,6 +851,7 @@ void manage_route(xbt_dict_t routing_table, const char *route_name, int action, route_link_list = links; break; case A_surfxml_route_action_OVERRIDE: + xbt_dynar_free(&links); break; default:break; }