OSDN Git Service

Fix two problems with printf that showed up in the python 2.2.1 tests;
authorManuel Novoa III <mjn3@codepoet.org>
Sat, 17 Aug 2002 00:35:15 +0000 (00:35 -0000)
committerManuel Novoa III <mjn3@codepoet.org>
Sat, 17 Aug 2002 00:35:15 +0000 (00:35 -0000)
One involving %o and one involving %f.

libc/stdio/printf.c

index 365cd41..e4eb0b6 100644 (file)
  * 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;