aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src/dialyzer_dataflow.erl
diff options
context:
space:
mode:
authorKostis Sagonas <[email protected]>2010-02-16 16:33:11 +0200
committerBjörn Gustavsson <[email protected]>2010-02-16 16:18:41 +0100
commitabe48c24c115fd629063653eef7bdabd0f82fbbc (patch)
tree09280e163873b801da7802eb2c718d0726ab4b13 /lib/dialyzer/src/dialyzer_dataflow.erl
parent8b7dd064e2d44b600f05a9135aac08a539a19ffa (diff)
downloadotp-abe48c24c115fd629063653eef7bdabd0f82fbbc.tar.gz
otp-abe48c24c115fd629063653eef7bdabd0f82fbbc.tar.bz2
otp-abe48c24c115fd629063653eef7bdabd0f82fbbc.zip
dialyzer: Fix system_limit exception in race analysis
dialyzer_callgraph: Avoid creation of too many ets tables by the race analysis. dialyzer_dataflow: The digraph returned by the race analysis should not be the translated one.
Diffstat (limited to 'lib/dialyzer/src/dialyzer_dataflow.erl')
-rw-r--r--lib/dialyzer/src/dialyzer_dataflow.erl10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/dialyzer/src/dialyzer_dataflow.erl b/lib/dialyzer/src/dialyzer_dataflow.erl
index 7fb309497a..dada88c8bf 100644
--- a/lib/dialyzer/src/dialyzer_dataflow.erl
+++ b/lib/dialyzer/src/dialyzer_dataflow.erl
@@ -291,10 +291,16 @@ analyze_module(Tree, Plt, Callgraph, Records, GetWarnings) ->
case BehaviourTranslations of
[] -> dialyzer_races:race(State5);
Behaviours ->
+ Callgraph2 = State5#state.callgraph,
+ Digraph = dialyzer_callgraph:get_digraph(Callgraph2),
TranslatedCallgraph =
dialyzer_behaviours:translate_callgraph(Behaviours, Module,
- State5#state.callgraph),
- dialyzer_races:race(State5#state{callgraph = TranslatedCallgraph})
+ Callgraph2),
+ St =
+ dialyzer_races:race(State5#state{callgraph = TranslatedCallgraph}),
+ Callgraph3 = dialyzer_callgraph:put_digraph(Digraph,
+ St#state.callgraph),
+ St#state{callgraph = Callgraph3}
end;
false ->
state__restore_race_code(