From 3f3e6a3ebf7137a632e5cfa71421c3eb5898c638 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 10 Jul 2018 12:56:55 +0100 Subject: [PATCH] [Fix] Fix padded numbers printing --- src/libutil/printf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libutil/printf.c b/src/libutil/printf.c index 0ad2dce27..be4ef402e 100644 --- a/src/libutil/printf.c +++ b/src/libutil/printf.c @@ -371,7 +371,7 @@ rspamd_sprintf_num (gchar *buf, gchar *last, guint64 ui64, gchar zero, *--p = _hex[(guint32) (ui64 & 0xf)]; } while (ui64 >>= 4); - len = (temp + sizeof (temp)) - p + 1; + len = (temp + sizeof (temp)) - p; } else { /* hexadecimal == 2 */ p = temp + sizeof(temp); @@ -379,13 +379,17 @@ rspamd_sprintf_num (gchar *buf, gchar *last, guint64 ui64, gchar zero, *--p = _HEX[(guint32) (ui64 & 0xf)]; } while (ui64 >>= 4); - len = (temp + sizeof (temp)) - p + 1; + len = (temp + sizeof (temp)) - p; } /* zero or space padding */ - while (width > 0 && buf < last) { - *buf++ = zero; + if (len < width) { + width -= len; + + while (width-- > 0 && buf < last) { + *buf++ = zero; + } } /* number safe copy */ -- 2.39.5