diff options
| author | Fred Hebert <mononcqc@ferd.ca> | 2015-08-17 11:13:29 -0400 |
|---|---|---|
| committer | Fred Hebert <mononcqc@ferd.ca> | 2015-08-17 11:13:29 -0400 |
| commit | d86399d7110912a9961ff343f501db16b5b24ad4 (patch) | |
| tree | a67ddd4b92bee36e9c982f56644f3acaabc2bd70 /src/rebar_digraph.erl | |
| parent | 642897867eddf00a7b1a9bf3ca99c0851b287db0 (diff) | |
| parent | 278c0bdfa521a9442c814d40b90528249a77a267 (diff) | |
Merge pull request #720 from pvmart/master
fix leaking ets tables caused by digraphs
Diffstat (limited to 'src/rebar_digraph.erl')
| -rw-r--r-- | src/rebar_digraph.erl | 31 |
1 files changed, 17 insertions, 14 deletions
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 |
