diff options
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/_itoa.c | 47 | ||||
-rw-r--r-- | stdio-common/printf_fp.c | 64 | ||||
-rw-r--r-- | stdio-common/vfscanf.c | 12 |
3 files changed, 66 insertions, 57 deletions
diff --git a/stdio-common/_itoa.c b/stdio-common/_itoa.c index 845928903c..e3b0533476 100644 --- a/stdio-common/_itoa.c +++ b/stdio-common/_itoa.c @@ -182,29 +182,32 @@ _itoa (value, buflim, base, upper_case) mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \ \ if (BITS_PER_MP_LIMB == 32) \ - if (work_hi != 0) \ - { \ - mp_limb_t work_lo; \ - int cnt; \ + { \ + if (work_hi != 0) \ + { \ + mp_limb_t work_lo; \ + int cnt; \ \ - work_lo = value & 0xfffffffful; \ - for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \ - { \ - *--bp = digits[work_lo & ((1ul << BITS) - 1)]; \ - work_lo >>= BITS; \ - } \ - if (BITS_PER_MP_LIMB % BITS != 0) \ - { \ - work_lo |= ((work_hi \ - & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \ - - 1)) \ - << BITS_PER_MP_LIMB % BITS); \ - *--bp = digits[work_lo]; \ - work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \ - } \ - } \ - else \ - work_hi = value & 0xfffffffful; \ + work_lo = value & 0xfffffffful; \ + for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \ + { \ + *--bp = digits[work_lo & ((1ul << BITS) - 1)]; \ + work_lo >>= BITS; \ + } \ + if (BITS_PER_MP_LIMB % BITS != 0) \ + { \ + work_lo \ + |= ((work_hi \ + & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \ + - 1)) \ + << BITS_PER_MP_LIMB % BITS); \ + *--bp = digits[work_lo]; \ + work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \ + } \ + } \ + else \ + work_hi = value & 0xfffffffful; \ + } \ do \ { \ *--bp = digits[work_hi & ((1 << BITS) - 1)]; \ diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c index e54fac0a57..e5e3026bce 100644 --- a/stdio-common/printf_fp.c +++ b/stdio-common/printf_fp.c @@ -574,19 +574,21 @@ __printf_fp (FILE *fp, for overflow. This is done by comparing with 10 shifted to the right position. */ if (incr == exponent + 3) - if (cnt_h <= BITS_PER_MP_LIMB - 4) - { - topval[0] = 0; - topval[1] - = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4 - cnt_h); - } - else - { - topval[0] = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4); - topval[1] = 0; - (void) __mpn_lshift (topval, topval, 2, - BITS_PER_MP_LIMB - cnt_h); - } + { + if (cnt_h <= BITS_PER_MP_LIMB - 4) + { + topval[0] = 0; + topval[1] + = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4 - cnt_h); + } + else + { + topval[0] = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4); + topval[1] = 0; + (void) __mpn_lshift (topval, topval, 2, + BITS_PER_MP_LIMB - cnt_h); + } + } /* We have to be careful when multiplying the last factor. If the result is greater than 1.0 be have to test it @@ -816,23 +818,25 @@ __printf_fp (FILE *fp, char *tp = cp; if (digit == '5' && (*(cp - 1) & 1) == 0) - /* This is the critical case. */ - if (fracsize == 1 && frac[0] == 0) - /* Rest of the number is zero -> round to even. - (IEEE 754-1985 4.1 says this is the default rounding.) */ - goto do_expo; - else if (scalesize == 0) - { - /* Here we have to see whether all limbs are zero since no - normalization happened. */ - size_t lcnt = fracsize; - while (lcnt >= 1 && frac[lcnt - 1] == 0) - --lcnt; - if (lcnt == 0) - /* Rest of the number is zero -> round to even. - (IEEE 754-1985 4.1 says this is the default rounding.) */ - goto do_expo; - } + { + /* This is the critical case. */ + if (fracsize == 1 && frac[0] == 0) + /* Rest of the number is zero -> round to even. + (IEEE 754-1985 4.1 says this is the default rounding.) */ + goto do_expo; + else if (scalesize == 0) + { + /* Here we have to see whether all limbs are zero since no + normalization happened. */ + size_t lcnt = fracsize; + while (lcnt >= 1 && frac[lcnt - 1] == 0) + --lcnt; + if (lcnt == 0) + /* Rest of the number is zero -> round to even. + (IEEE 754-1985 4.1 says this is the default rounding.) */ + goto do_expo; + } + } if (fracdig_no > 0) { diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index 116b19b442..f9bbb6929e 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -602,11 +602,13 @@ __vfscanf (FILE *s, const char *format, va_list argptr) #define NEXT_WIDE_CHAR(First) \ c = inchar (); \ if (c == EOF) \ - /* EOF is only an error for the first character. */ \ - if (First) \ - input_error (); \ - else \ - break; \ + { \ + /* EOF is only an error for the first character. */ \ + if (First) \ + input_error (); \ + else \ + break; \ + } \ val = c; \ if (val >= 0x80) \ { \ |