From 5a583d0e58a97038f5fa3bdfa3c35694f0a18f34 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Wed, 28 Feb 2018 10:04:53 +0100 Subject: kernel: Fix handling of os:cmd option max_size in win git cherry-pick 75b0f73f72e1783d4ace976cdd2b5f23bdc3ebae --- lib/kernel/src/os.erl | 8 ++++---- lib/kernel/test/os_SUITE.erl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl index dbb28c1210..92ac401b72 100644 --- a/lib/kernel/src/os.erl +++ b/lib/kernel/src/os.erl @@ -310,16 +310,16 @@ get_data(Port, MonRef, Eot, Sofar, Size, Max) -> iolist_to_binary(Sofar) end. -eot(_Bs, <<>>, _Size, _Max) -> +eot(Bs, <<>>, Size, Max) when Size + byte_size(Bs) < Max -> more; +eot(Bs, <<>>, Size, Max) -> + binary:part(Bs, {0, Max - Size}); eot(Bs, Eot, Size, Max) -> case binary:match(Bs, Eot) of - nomatch when Size + byte_size(Bs) < Max -> - more; {Pos, _} when Size + Pos < Max -> binary:part(Bs,{0, Pos}); _ -> - binary:part(Bs,{0, Max - Size}) + eot(Bs, <<>>, Size, Max) end. %% When port_close returns we know that all the diff --git a/lib/kernel/test/os_SUITE.erl b/lib/kernel/test/os_SUITE.erl index 70752e6ee6..cfd475becf 100644 --- a/lib/kernel/test/os_SUITE.erl +++ b/lib/kernel/test/os_SUITE.erl @@ -324,8 +324,8 @@ max_size_command(_Config) -> Res32768 = os:cmd("cat /dev/zero", #{ max_size => 32768 }), 32768 = length(Res32768), - ResHello = os:cmd("echo hello", #{ max_size => 20 }), - 6 = length(ResHello). + ResHello = string:trim(os:cmd("echo hello", #{ max_size => 20 })), + 5 = length(ResHello). %% Test that the os:perf_counter api works as expected perf_counter_api(_Config) -> -- cgit v1.2.3