diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-04-16 23:28:39 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-04-16 23:28:39 +0000 |
commit | d40e67f54ca528c1435419c3bf1868ba288308df (patch) | |
tree | 8f6b7253289bc8ed3ec7b2751794869e904ff50a | |
parent | 0fca3153e7dee01073bcb0c382fb3f6a6c487ef3 (diff) | |
download | glibc-d40e67f54ca528c1435419c3bf1868ba288308df.tar glibc-d40e67f54ca528c1435419c3bf1868ba288308df.tar.gz glibc-d40e67f54ca528c1435419c3bf1868ba288308df.tar.bz2 glibc-d40e67f54ca528c1435419c3bf1868ba288308df.zip |
* stdio-common/printf_fp.c (___printf_fp): Fix exponent -4
special case handling when wcp == wstartp + 1. Fix a comment typo.
* stdio-common/tfformat.c (sprint_doubles): Add a new testcase.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | stdio-common/printf_fp.c | 13 | ||||
-rw-r--r-- | stdio-common/tfformat.c | 1 |
3 files changed, 16 insertions, 4 deletions
@@ -1,3 +1,9 @@ +2007-04-13 Jakub Jelinek <jakub@redhat.com> + + * stdio-common/printf_fp.c (___printf_fp): Fix exponent -4 + special case handling when wcp == wstartp + 1. Fix a comment typo. + * stdio-common/tfformat.c (sprint_doubles): Add a new testcase. + 2007-03-30 Jakub Jelinek <jakub@redhat.com> * libio/libio.h (__underflow, __uflow, __overflow, __wunderflow, diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c index c27c0d496c..9b796eac2f 100644 --- a/stdio-common/printf_fp.c +++ b/stdio-common/printf_fp.c @@ -990,7 +990,7 @@ ___printf_fp (FILE *fp, 0)) /* This is a special case: the rounded number is 1.0, the format is 'g' or 'G', and the alternative format - is selected. This means the result mist be "1.". */ + is selected. This means the result must be "1.". */ --added_zeros; } @@ -1081,12 +1081,17 @@ ___printf_fp (FILE *fp, /* This is another special case. The exponent of the number is really smaller than -4, which requires the 'e'/'E' format. But after rounding the number has an exponent of -4. */ - assert (wcp >= wstartp + 2); + assert (wcp >= wstartp + 1); assert (wstartp[0] == L'1'); __wmemcpy (wstartp, L"0.0001", 6); wstartp[1] = decimalwc; - wmemset (wstartp + 6, L'0', wcp - (wstartp + 2)); - wcp += 4; + if (wcp >= wstartp + 2) + { + wmemset (wstartp + 6, L'0', wcp - (wstartp + 2)); + wcp += 4; + } + else + wcp += 5; } else { diff --git a/stdio-common/tfformat.c b/stdio-common/tfformat.c index 0370834e9f..259e2e0b18 100644 --- a/stdio-common/tfformat.c +++ b/stdio-common/tfformat.c @@ -4020,6 +4020,7 @@ sprint_double_type sprint_doubles[] = {__LINE__, 0.000956, "0.001", "%#.0g"}, {__LINE__, 0.000098, "0.0001", "%#.0g"}, {__LINE__, 0.0000996, "0.00010", "%#.2g"}, + {__LINE__, 9.999999999999999e-05, "0.0001", "%g"}, {0 } |