X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3119cbc65eaf6635be81c0c71a4ea832097a7fb5..844d5085f16498071d85e6b89e14c8db8191c13e:/src/xbt/graph.c diff --git a/src/xbt/graph.c b/src/xbt/graph.c index 240a974dc2..61b83645f5 100644 --- a/src/xbt/graph.c +++ b/src/xbt/graph.c @@ -140,39 +140,34 @@ void xbt_graph_free_graph(xbt_graph_t g, void_f_pvoid_t edge_free_function, void_f_pvoid_t graph_free_function) { - unsigned int cursor = 0; - xbt_node_t node = NULL; - xbt_edge_t edge = NULL; + unsigned int cursor; + xbt_node_t node; + xbt_edge_t edge; + xbt_dynar_foreach(g->edges, cursor, edge) { + if (edge_free_function) + edge_free_function(edge->data); + free(edge); + } + xbt_dynar_free(&(g->edges)); xbt_dynar_foreach(g->nodes, cursor, node) { xbt_dynar_free(&(node->out)); xbt_dynar_free(&(node->in)); if (node_free_function) node_free_function(node->data); + free(node); } - - xbt_dynar_foreach(g->edges, cursor, edge) { - if (edge_free_function) - edge_free_function(edge->data); - } - - xbt_dynar_foreach(g->nodes, cursor, node) - free(node); xbt_dynar_free(&(g->nodes)); - xbt_dynar_foreach(g->edges, cursor, edge) - free(edge); - xbt_dynar_free(&(g->edges)); if (graph_free_function) graph_free_function(g->data); free(g); xbt_graph_parse_lex_destroy(); - return; } -/** @brief remove the given node from the given graph */ +/** @brief remove the given node from the given graph */ void xbt_graph_free_node(xbt_graph_t g, xbt_node_t n, void_f_pvoid_t node_free_function, void_f_pvoid_t edge_free_function) @@ -210,7 +205,7 @@ void xbt_graph_free_node(xbt_graph_t g, xbt_node_t n, return; } -/** @brief remove the given edge from the given graph */ +/** @brief remove the given edge from the given graph */ void xbt_graph_free_edge(xbt_graph_t g, xbt_edge_t e, void_f_pvoid_t free_function) {