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
Plug a memleak.
[simgrid.git]
/
src
/
surf
/
surfxml_parse.c
diff --git
a/src/surf/surfxml_parse.c
b/src/surf/surfxml_parse.c
index
d8874a5
..
2186a86
100644
(file)
--- 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.");
"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);
}
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) {
}
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)
}
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();
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();
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_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);
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_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) {
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:
route_link_list = links;
break;
case A_surfxml_route_action_OVERRIDE:
+ xbt_dynar_free(&links);
break;
default:break;
}
break;
default:break;
}