From 278c0bdfa521a9442c814d40b90528249a77a267 Mon Sep 17 00:00:00 2001 From: pvmart Date: Mon, 17 Aug 2015 17:08:31 +0800 Subject: fix leaking ets tables caused by digraphs --- src/rebar_digraph.erl | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src/rebar_digraph.erl') diff --git a/src/rebar_digraph.erl b/src/rebar_digraph.erl index 1132a6c..d21ff77 100644 --- a/src/rebar_digraph.erl +++ b/src/rebar_digraph.erl @@ -16,20 +16,23 @@ compile_order(Apps) -> Deps = all_apps_deps(App), add(Graph, {Name, Deps}) end, Apps), - case digraph_utils:topsort(Graph) of - false -> - case digraph_utils:is_acyclic(Graph) of - true -> - {error, no_sort}; - false -> - Cycles = lists:sort( - [lists:sort(Comp) || Comp <- digraph_utils:strong_components(Graph), - length(Comp)>1]), - {error, {cycles, Cycles}} - end; - V -> - {ok, names_to_apps(lists:reverse(V), Apps)} - end. + Order = + case digraph_utils:topsort(Graph) of + false -> + case digraph_utils:is_acyclic(Graph) of + true -> + {error, no_sort}; + false -> + Cycles = lists:sort( + [lists:sort(Comp) || Comp <- digraph_utils:strong_components(Graph), + length(Comp)>1]), + {error, {cycles, Cycles}} + end; + V -> + {ok, names_to_apps(lists:reverse(V), Apps)} + end, + true = digraph:delete(Graph), + Order. add(Graph, {PkgName, Deps}) -> case digraph:vertex(Graph, PkgName) of -- cgit v1.1