* libc/stdio/vfprintf.c (_VFPRINTF_R): Don't zero pad on infinity

or NaN with %05f.
This commit is contained in:
Eric Blake 2007-04-24 20:09:50 +00:00
parent 27e5e9ab05
commit 5866c02352
2 changed files with 14 additions and 2 deletions

View File

@ -1,5 +1,8 @@
2007-04-24 Eric Blake <ebb9@byu.net>
* libc/stdio/vfprintf.c (_VFPRINTF_R): Don't zero pad on infinity
or NaN with %05f.
* libc/stdio/vfprintf.c (_VFPRINTF_R): Avoid multibyte when not
_MB_CAPABLE.

View File

@ -879,7 +879,12 @@ reswitch: switch (ch) {
_fpvalue = GET_ARG (N, ap, double);
}
/* do this before tricky precision changes */
/* do this before tricky precision changes
If the output is infinite or NaN, leading
zeros are not permitted. Otherwise, scanf
could not read what printf wrote.
*/
if (isinf (_fpvalue)) {
if (_fpvalue < 0)
sign = '-';
@ -888,6 +893,7 @@ reswitch: switch (ch) {
else
cp = "inf";
size = 3;
flags &= ~ZEROPAD;
break;
}
if (isnan (_fpvalue)) {
@ -896,11 +902,12 @@ reswitch: switch (ch) {
else
cp = "nan";
size = 3;
flags &= ~ZEROPAD;
break;
}
#else /* !_NO_LONGDBL */
if (flags & LONGDBL) {
_fpvalue = GET_ARG (N, ap, _LONG_DOUBLE);
} else {
@ -917,6 +924,7 @@ reswitch: switch (ch) {
else
cp = "inf";
size = 3;
flags &= ~ZEROPAD;
break;
}
if (tmp == 1) {
@ -925,6 +933,7 @@ reswitch: switch (ch) {
else
cp = "nan";
size = 3;
flags &= ~ZEROPAD;
break;
}
#endif /* !_NO_LONGDBL */