From 8bdcb96c3c33afd7f85fc2953970b6709f04a74a Mon Sep 17 00:00:00 2001
From: Hans Bolinder <hasse@erlang.org>
Date: Tue, 28 May 2019 09:38:07 +0200
Subject: stdlib: Fix a bug concerning io_lib option 'chars_limit'

See also https://bugs.erlang.org/browse/ERL-957.
---
 lib/stdlib/src/io_lib_pretty.erl |  2 ++
 lib/stdlib/test/io_SUITE.erl     | 10 ++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/stdlib/src/io_lib_pretty.erl b/lib/stdlib/src/io_lib_pretty.erl
index 8f2fd7ea8f..ffc02febdc 100644
--- a/lib/stdlib/src/io_lib_pretty.erl
+++ b/lib/stdlib/src/io_lib_pretty.erl
@@ -795,6 +795,8 @@ printable_bin0(Bin, D, T, Enc) ->
           end,
     printable_bin(Bin, Len, D, Enc).
 
+printable_bin(_Bin, 0, _D, _Enc) ->
+    false;
 printable_bin(Bin, Len, D, latin1) ->
     N = erlang:min(20, Len),
     L = binary_to_list(Bin, 1, N),
diff --git a/lib/stdlib/test/io_SUITE.erl b/lib/stdlib/test/io_SUITE.erl
index 824f5d19f2..7796da66b8 100644
--- a/lib/stdlib/test/io_SUITE.erl
+++ b/lib/stdlib/test/io_SUITE.erl
@@ -32,7 +32,7 @@
          io_with_huge_message_queue/1, format_string/1,
 	 maps/1, coverage/1, otp_14178_unicode_atoms/1, otp_14175/1,
          otp_14285/1, limit_term/1, otp_14983/1, otp_15103/1, otp_15076/1,
-         otp_15159/1, otp_15639/1]).
+         otp_15159/1, otp_15639/1, otp_15847/1]).
 
 -export([pretty/2, trf/3]).
 
@@ -65,7 +65,7 @@ all() ->
      io_lib_width_too_small, io_with_huge_message_queue,
      format_string, maps, coverage, otp_14178_unicode_atoms, otp_14175,
      otp_14285, limit_term, otp_14983, otp_15103, otp_15076, otp_15159,
-     otp_15639].
+     otp_15639, otp_15847].
 
 %% Error cases for output.
 error_1(Config) when is_list(Config) ->
@@ -2680,3 +2680,9 @@ otp_15639(_Config) ->
     "\"12345678\"..." = pretty("123456789"++[x], UOpts),
     "[[...]|...]" = pretty(["1","2","3","4","5","6","7","8"], UOpts),
     ok.
+
+otp_15847(_Config) ->
+    T = {someRecord,<<"1234567890">>,some,more},
+    "{someRecord,<<...>>,...}" =
+        pretty(T, [{chars_limit,20}, {encoding,latin1}]),
+    ok.
-- 
cgit v1.2.3