File 2078-Fix-bug-in-compact-representation-of-float_to_list-2.patch of Package erlang

From 203ee6dcbd57c2fdbd9b9e09f0c42f7abf04dbd8 Mon Sep 17 00:00:00 2001
From: Serge Aleynikov <saleyn@gmail.com>
Date: Fri, 10 Aug 2018 09:54:01 -0400
Subject: [PATCH] Fix bug in compact representation of float_to_list/2

---
 erts/emulator/sys/common/erl_sys_common_misc.c | 3 ++-
 erts/emulator/test/num_bif_SUITE.erl           | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/erts/emulator/sys/common/erl_sys_common_misc.c b/erts/emulator/sys/common/erl_sys_common_misc.c
index 2541ab5d31..d34e1a9ec0 100644
--- a/erts/emulator/sys/common/erl_sys_common_misc.c
+++ b/erts/emulator/sys/common/erl_sys_common_misc.c
@@ -176,6 +176,7 @@ sys_double_to_chars_fast(double f, char *buffer, int buffer_size, int decimals,
     double af;
     Uint64 int_part, frac_part;
     int neg;
+    int  has_decimals = decimals != 0;
     char *p = buffer;
 
     if (decimals < 0)
@@ -257,7 +258,7 @@ sys_double_to_chars_fast(double f, char *buffer, int buffer_size, int decimals,
     }
 
     /* Delete trailing zeroes */
-    if (compact)
+    if (compact && has_decimals)
         p = find_first_trailing_zero(p);
     *p = '\0';
     return p - buffer;
diff --git a/erts/emulator/test/num_bif_SUITE.erl b/erts/emulator/test/num_bif_SUITE.erl
index 700734cd0b..f15217814a 100644
--- a/erts/emulator/test/num_bif_SUITE.erl
+++ b/erts/emulator/test/num_bif_SUITE.erl
@@ -161,6 +161,7 @@ t_float_to_string(Config) when is_list(Config) ->
     test_fts("1.000",1.0,   [{decimals,   3}]),
     test_fts("1.0",1.0, [{decimals, 1}]),
     test_fts("1.0",1.0, [{decimals, 3}, compact]),
+    test_fts("10",10.0, [{decimals, 0}, compact]),
     test_fts("1.12",1.123, [{decimals, 2}]),
     test_fts("1.123",1.123, [{decimals, 3}]),
     test_fts("1.123",1.123, [{decimals, 3}, compact]),
-- 
2.16.4

openSUSE Build Service is sponsored by