summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2023-06-12 20:04:22 -0400
committerRich Felker <dalias@aerifal.cx>2023-06-12 20:04:22 -0400
commit40834f6c1e30cc25c608678c372db498a3d9dbc3 (patch)
tree675e8cea1ab478890a5d0f56f6a332fcc846f4d6 /src
parent3a23cd06b08054f81bf904c414e0d083a56248f2 (diff)
downloadmusl-40834f6c1e30cc25c608678c372db498a3d9dbc3.tar.gz
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.
Diffstat (limited to 'src')
-rw-r--r--src/stdio/vfprintf.c2
1 files changed, 1 insertions, 1 deletions
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;