From 0e09a01f4492ba6c6569482842b35f6364d5c95b Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Sat, 17 Aug 2002 00:35:15 +0000 Subject: Fix two problems with printf that showed up in the python 2.2.1 tests; One involving %o and one involving %f. --- libc/stdio/printf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'libc/stdio') diff --git a/libc/stdio/printf.c b/libc/stdio/printf.c index 365cd41a2..e4eb0b69d 100644 --- a/libc/stdio/printf.c +++ b/libc/stdio/printf.c @@ -40,6 +40,10 @@ * 5-10-2002 * Remove __isdigit and use new ctype.h version. * Add conditional setting of QUAL_CHARS for size_t and ptrdiff_t. + * + * 8-16-2002 + * Fix two problems that showed up with the python 2.2.1 tests; one + * involving %o and one involving %f. */ @@ -1164,7 +1168,7 @@ int _do_one_spec(FILE * __restrict stream, register ppfs_t *ppfs, int *count) if (ppfs->conv_num == CONV_X) { prefix_num = PREFIX_UPR_X; } - if ((ppfs->conv_num == CONV_o) && (numfill < slen)) { + if ((ppfs->conv_num == CONV_o) && (numfill <= slen)) { numfill = ((*s == '0') ? 1 : slen + 1); } } @@ -1896,6 +1900,11 @@ size_t _dtostr(FILE * fp, long double x, struct printf_info *info) if (mode == 'f') { round += exp; + if (round < -1) { + memset(buf, '0', MAX_DIGITS); + exp = -1; + round = -1; + } } s = buf; -- cgit v1.2.3