}
}
+static void
+freeTreeList (graph_t* g)
+{
+ node_t *n;
+ for (n = GD_nlist(G); n; n = ND_next(n)) {
+ free_list(ND_tree_in(n));
+ free_list(ND_tree_out(n));
+ ND_mark(n) = FALSE;
+ }
+}
+
static void LR_balance(void)
{
int i, delta;
free_list(ND_tree_out(n));
ND_mark(n) = FALSE;
}
+ freeTreeList (G);
}
static void TB_balance(void)
feasible = init_graph(g);
if (!feasible)
init_rank();
- if (maxiter <= 0)
+ if (maxiter <= 0) {
+ freeTreeList (g);
return 0;
+ }
if ((s = agget(g, "searchsize")))
Search_size = atoi(s);
else
Search_size = SEARCHSIZE;
- if (feasible_tree()) return 1;
+ if (feasible_tree()) {
+ freeTreeList (g);
+ return 1;
+ }
while ((e = leave_edge())) {
f = enter_edge(e);
update(e, f);
static void fdp_cleanup_node(node_t * n)
{
- free(ND_alg(n));
free(ND_pos(n));
if (ND_shape(n))
ND_shape(n)->fns->freefn(n);
node_t *n;
edge_t *e;
- for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
+ n = agfstnode(g);
+ free(ND_alg(n));
+ for (; n; n = agnxtnode(g, n)) {
for (e = agfstedge(g, n); e; e = agnxtedge(g, e, n)) {
fdp_cleanup_edge(e);
}