diff options
| -rw-r--r-- | src/supervisor2.erl | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/supervisor2.erl b/src/supervisor2.erl index 3b9717394f..8b0899a68b 100644 --- a/src/supervisor2.erl +++ b/src/supervisor2.erl @@ -1258,14 +1258,12 @@ state_del_child(Child, State) -> NChildren = del_child(Child#child.name, State#state.children), State#state{children = NChildren}. -del_child(Name, [Ch|Chs]) when Ch#child.name =:= Name, Ch#child.restart_type =:= temporary -> +del_child(Name, [Ch=#child{pid = ?restarting(_)}|_]=Chs) when Ch#child.name =:= Name -> Chs; -del_child(Name, [Ch=#child{pid = ?restarting(_)}|_]=Chs) - when Ch#child.name =:= Name -> +del_child(Name, [Ch|Chs]) when Ch#child.name =:= Name, Ch#child.restart_type =:= temporary -> Chs; del_child(Name, [Ch|Chs]) when Ch#child.name =:= Name -> [Ch#child{pid = undefined} | Chs]; -%% the next two clauses only handle deletions during a one_for_all restart del_child(Pid, [Ch|Chs]) when Ch#child.pid =:= Pid, Ch#child.restart_type =:= temporary -> Chs; del_child(Pid, [Ch|Chs]) when Ch#child.pid =:= Pid -> |
