From 40834f6c1e30cc25c608678c372db498a3d9dbc3 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 12 Jun 2023 20:04:22 -0400 Subject: printf core: fix gratuitous integer formatting buffer size the extra terms 3 and LDBL_MANT_DIG/4 are remnants of a proto-musl implementation of printf where the sign/prefix and floating point conversions were performed naively into this buffer. having them there obscures the actual intended buffer size (sufficient to hold between 2 and 3 octal digits per byte, rounded up to 3 for simplicity) and interferes with upcoming work to add C2x binary formats which would otherwise be stuck having to explain a similar fix to buffer size as part of an unrelated change. --- src/stdio/vfprintf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/stdio') diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c index c551ccf0..33019ff1 100644 --- a/src/stdio/vfprintf.c +++ b/src/stdio/vfprintf.c @@ -437,7 +437,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, unsigned st, ps; int cnt=0, l=0; size_t i; - char buf[sizeof(uintmax_t)*3+3+LDBL_MANT_DIG/4]; + char buf[sizeof(uintmax_t)*3]; const char *prefix; int t, pl; wchar_t wc[2], *ws; -- cgit v1.2.1