aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src/supervisor.erl
diff options
context:
space:
mode:
authorHenrik Nord <[email protected]>2011-08-30 11:28:41 +0200
committerHenrik Nord <[email protected]>2011-08-30 11:28:41 +0200
commitdb333803584b17b6f281c974f8f78034be60e010 (patch)
tree380c5ebb0a684fbc7d6e6a9ffac5641428d250e3 /lib/stdlib/src/supervisor.erl
parent1a2fbf178614f752f04fd5c7499bb659293adf10 (diff)
parent25543b7f0be1b87351d616143b5d149b1aed1cea (diff)
downloadotp-db333803584b17b6f281c974f8f78034be60e010.tar.gz
otp-db333803584b17b6f281c974f8f78034be60e010.tar.bz2
otp-db333803584b17b6f281c974f8f78034be60e010.zip
Merge branch 'dev' into major
Diffstat (limited to 'lib/stdlib/src/supervisor.erl')
-rw-r--r--lib/stdlib/src/supervisor.erl7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl
index 023183c5f0..36cc7f4f4b 100644
--- a/lib/stdlib/src/supervisor.erl
+++ b/lib/stdlib/src/supervisor.erl
@@ -738,6 +738,13 @@ restart(one_for_all, Child, State) ->
terminate_children(Children, SupName) ->
terminate_children(Children, SupName, []).
+%% Temporary children should not be restarted and thus should
+%% be skipped when building the list of terminated children, although
+%% we do want them to be shut down as many functions from this module
+%% use this function to just clear everything.
+terminate_children([Child = #child{restart_type=temporary} | Children], SupName, Res) ->
+ do_terminate(Child, SupName),
+ terminate_children(Children, SupName, Res);
terminate_children([Child | Children], SupName, Res) ->
NChild = do_terminate(Child, SupName),
terminate_children(Children, SupName, [NChild | Res]);