aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/code_server.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-06-11 15:48:28 +0200
committerBjörn Gustavsson <[email protected]>2014-06-12 12:06:09 +0200
commit9eccead7d89673648318815716b73f6d50ec068b (patch)
treef00421ff1897703d499e7b812e98f532caea9862 /lib/kernel/src/code_server.erl
parent7274a9db9b17cc14fde15a3aa0574136c58e8551 (diff)
downloadotp-9eccead7d89673648318815716b73f6d50ec068b.tar.gz
otp-9eccead7d89673648318815716b73f6d50ec068b.tar.bz2
otp-9eccead7d89673648318815716b73f6d50ec068b.zip
Allow unsticking pre-loaded modules
Commit ed06dd12ea74018b902a2c4c7924313d23cedb75 made pre-loaded modules (such as erlang) sticky, and also made it impossible to unstick them to prevent them from ever be reloaded. It turns out that there are tools that may want to instrument the erlang module (such as concuerror), so making it impossible to unstick modules is harsh. Therefore, revert the part of the commit that prevented unsticking the pre-loaded modules.
Diffstat (limited to 'lib/kernel/src/code_server.erl')
-rw-r--r--lib/kernel/src/code_server.erl11
1 files changed, 1 insertions, 10 deletions
diff --git a/lib/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl
index dd06affd70..819554ce74 100644
--- a/lib/kernel/src/code_server.erl
+++ b/lib/kernel/src/code_server.erl
@@ -1168,7 +1168,7 @@ stick_dir(Dir, Stick, St) ->
true ->
foreach(fun (M) -> ets:insert(Db, {{sticky,M},true}) end, Mods);
false ->
- foreach(fun (M) -> do_unstick_mod(Db, M) end, Mods)
+ foreach(fun (M) -> ets:delete(Db, {sticky,M}) end, Mods)
end;
Error ->
Error
@@ -1180,15 +1180,6 @@ stick_mod(M, Stick, St) ->
true ->
ets:insert(Db, {{sticky,M},true});
false ->
- do_unstick_mod(Db, M)
- end.
-
-do_unstick_mod(Db, M) ->
- case ets:lookup(Db, M) of
- [{M,preloaded}] ->
- %% Never unstick pre-loaded modules.
- true;
- _ ->
ets:delete(Db, {sticky,M})
end.