From cad08127834757a48ad85b8f6e177c2d1a7f8589 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Tue, 16 Aug 2016 10:17:50 +0200 Subject: erts: Make sure to flush potential exit message --- lib/kernel/src/os.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/kernel/src') diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl index 81b70a7fee..05bbf1069e 100644 --- a/lib/kernel/src/os.erl +++ b/lib/kernel/src/os.erl @@ -279,15 +279,11 @@ get_data(Port, MonRef, Eot, Sofar) -> Last -> Port ! {self(), close}, flush_until_closed(Port), + flush_exit(Port), iolist_to_binary([Sofar, Last]) end; {'DOWN', MonRef, _, _ , _} -> - receive - {'EXIT', Port, _} -> - ok - after 1 -> % force context switch - ok - end, + flush_exit(Port), iolist_to_binary(Sofar) end. @@ -307,3 +303,11 @@ flush_until_closed(Port) -> {Port, closed} -> true end. + +flush_exit(Port) -> + receive + {'EXIT', Port, _} -> + ok + after 1 -> % force context switch + ok + end. -- cgit v1.2.3