summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_utils.erl23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index bb05597..a3c8b9b 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -293,14 +293,23 @@ deprecated(Old, New, When) ->
-spec delayed_halt(integer()) -> no_return().
delayed_halt(Code) ->
- case os:type() of
- {win32, nt} ->
- timer:sleep(100),
+ %% Work around buffer flushing issue in erlang:halt if OTP older
+ %% than R15B01.
+ %% TODO: remove workaround once we require R15B01 or newer
+ %% R15B01 introduced erlang:halt/2
+ case erlang:is_builtin(erlang, halt, 2) of
+ true ->
halt(Code);
- _ ->
- halt(Code),
- %% workaround to delay exit until all output is written
- receive after infinity -> ok end
+ false ->
+ case os:type() of
+ {win32, nt} ->
+ timer:sleep(100),
+ halt(Code);
+ _ ->
+ halt(Code),
+ %% workaround to delay exit until all output is written
+ receive after infinity -> ok end
+ end
end.
%% ====================================================================