From ee201b7a8c5a1116f3aae19de68520d9fc7391d3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 16 Apr 2019 14:04:28 +0100 Subject: [Fix] Fix floating point printing --- src/libutil/printf.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libutil/printf.c b/src/libutil/printf.c index 9dc14441c..84dd5d272 100644 --- a/src/libutil/printf.c +++ b/src/libutil/printf.c @@ -947,9 +947,8 @@ rspamd_vprintf_common (rspamd_printf_append_func func, case 'f': - case 'g': f = (gdouble) va_arg (args, double); - slen = fpconv_dtoa (f, dtoabuf); + slen = fpconv_dtoa (f, dtoabuf, false); if (frac_width != 0) { const gchar *dot_pos = memchr (dtoabuf, '.', slen); @@ -980,10 +979,16 @@ rspamd_vprintf_common (rspamd_printf_append_func func, continue; + case 'g': + f = (gdouble) va_arg (args, double); + slen = fpconv_dtoa (f, dtoabuf, true); + RSPAMD_PRINTF_APPEND (dtoabuf, slen); + + continue; + case 'F': - case 'G': f = (gdouble) va_arg (args, long double); - slen = fpconv_dtoa (f, dtoabuf); + slen = fpconv_dtoa (f, dtoabuf, false); if (frac_width != 0) { const gchar *dot_pos = memchr (dtoabuf, '.', slen); @@ -1014,6 +1019,13 @@ rspamd_vprintf_common (rspamd_printf_append_func func, continue; + case 'G': + f = (gdouble) va_arg (args, long double); + slen = fpconv_dtoa (f, dtoabuf, true); + RSPAMD_PRINTF_APPEND (dtoabuf, slen); + + continue; + case 'p': ui64 = (uintptr_t) va_arg (args, void *); hex = 2; -- cgit v1.2.3