aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sasl/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sasl/src')
-rw-r--r--lib/sasl/src/release_handler_1.erl27
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/sasl/src/release_handler_1.erl b/lib/sasl/src/release_handler_1.erl
index ff62f847ac..590ecdba65 100644
--- a/lib/sasl/src/release_handler_1.erl
+++ b/lib/sasl/src/release_handler_1.erl
@@ -122,22 +122,29 @@ split_instructions([], Before) ->
%% Mod = atom()
%%-----------------------------------------------------------------
check_old_processes(Script) ->
+ Procs = erlang:processes(),
lists:foreach(fun({load, {Mod, soft_purge, _PostPurgeMethod}}) ->
- check_old_code(Mod);
+ check_old_code(Mod,Procs);
({remove, {Mod, soft_purge, _PostPurgeMethod}}) ->
- check_old_code(Mod);
+ check_old_code(Mod,Procs);
(_) -> ok
end,
Script).
-check_old_code(Mod) ->
- lists:foreach(fun(Pid) ->
- case erlang:check_process_code(Pid, Mod) of
- false -> ok;
- true -> throw({error, Mod})
- end
- end,
- erlang:processes()).
+check_old_code(Mod,Procs) ->
+ case erlang:check_old_code(Mod) of
+ true ->
+ lists:foreach(fun(Pid) ->
+ case erlang:check_process_code(Pid, Mod) of
+ false -> ok;
+ true -> throw({error, Mod})
+ end
+ end,
+ Procs);
+ false ->
+ ok
+ end.
+
%%-----------------------------------------------------------------
%% An unpurged module is a module for which there exist an old