Skip to content

Commit f10cf8b

Browse files
author
José Valim
committed
Make sure locals tracker can be stopped
1 parent 75313ab commit f10cf8b

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

lib/elixir/src/elixir_locals.erl

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010

1111
-include("elixir.hrl").
1212
-define(cache, {elixir, cache_env}).
13+
-define(locals, {elixir, locals}).
1314
-define(tracker, 'Elixir.Module.LocalsTracker').
1415

1516
setup({DataSet, _DataBag}) ->
1617
ets:insert(DataSet, {?cache, 0, nil}),
17-
ok.
1818

19-
stop({_DataSet, _DataBag}) ->
19+
case elixir_config:get(bootstrap) of
20+
false -> ets:insert(DataSet, {?locals, true});
21+
true -> ok
22+
end,
23+
2024
ok.
2125

26+
stop({DataSet, _DataBag}) ->
27+
ets:delete(DataSet, ?locals).
28+
2229
yank(Tuple, Module) ->
2330
if_tracker(Module, fun(Tracker) -> ?tracker:yank(Tracker, Tuple) end).
2431

@@ -44,9 +51,12 @@ if_tracker(Module, Callback) ->
4451
if_tracker(Module, ok, Callback).
4552

4653
if_tracker(Module, Default, Callback) ->
47-
try {elixir_config:get(bootstrap), elixir_module:data_tables(Module)} of
48-
{true, _Tracker} -> Default;
49-
{false, Tracker} -> Callback(Tracker)
54+
try
55+
{DataSet, _} = Tables = elixir_module:data_tables(Module),
56+
{ets:member(DataSet, ?locals), Tables}
57+
of
58+
{true, Tracker} -> Callback(Tracker);
59+
{false, _} -> Default
5060
catch
5161
error:badarg -> Default
5262
end.

0 commit comments

Comments
 (0)