diff options
| -rw-r--r-- | src/supervisor2.erl | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/supervisor2.erl b/src/supervisor2.erl index ca2199905f..3b9717394f 100644 --- a/src/supervisor2.erl +++ b/src/supervisor2.erl @@ -1260,11 +1260,12 @@ state_del_child(Child, State) -> del_child(Name, [Ch|Chs]) when Ch#child.name =:= Name, Ch#child.restart_type =:= temporary -> Chs; -del_child(NameOrPid, [Ch=#child{pid = ?restarting(_)}|_]=Chs) - when Ch#child.name =:= NameOrPid -> +del_child(Name, [Ch=#child{pid = ?restarting(_)}|_]=Chs) + when Ch#child.name =:= Name -> 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 -> |
