[PATCH 3/3] Don't display trailing '.' in _dcvt
Keith Packard
keithp@keithp.com
Wed Dec 18 06:01:00 GMT 2019
In the two helper functions that _dcvt calls for 'f' and 'e' mode, if
there are no digits to display after the decimal point, don't add one.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
newlib/libc/stdlib/ecvtbuf.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/newlib/libc/stdlib/ecvtbuf.c b/newlib/libc/stdlib/ecvtbuf.c
index 8936363ce..356c31b98 100644
--- a/newlib/libc/stdlib/ecvtbuf.c
+++ b/newlib/libc/stdlib/ecvtbuf.c
@@ -93,7 +93,8 @@ print_f (struct _reent *ptr,
{
if (p == start)
*buf++ = '0';
- *buf++ = '.';
+ if (decpt < 0 && ndigit > 0)
+ *buf++ = '.';
while (decpt < 0 && ndigit > 0)
{
*buf++ = '0';
@@ -148,11 +149,15 @@ print_e (struct _reent *ptr,
}
*buf++ = *p++;
- if (dot || ndigit != 0)
- *buf++ = '.';
+ if (ndigit > 0)
+ dot = 1;
while (*p && ndigit > 0)
{
+ if (dot) {
+ *buf++ = '.';
+ dot = 0;
+ }
*buf++ = *p++;
ndigit--;
}
@@ -168,6 +173,10 @@ print_e (struct _reent *ptr,
{
while (ndigit > 0)
{
+ if (dot) {
+ *buf++ = '.';
+ dot = 0;
+ }
*buf++ = '0';
ndigit--;
}
--
2.24.0
More information about the Newlib
mailing list