This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! This hunk is supposed to shift retval up by used bits where used >= BITS_PER_MP_LIMB, but it clears also the lowest limb already containing result of mpn_lshift. 2004-07-21 Jakub Jelinek <jakub@redhat.com> [BZ #274] * stdlib/strtod_l.c (INTERNAL (__STRTOF)): Fix used >= BITS_PER_MP_LIMB shifting up. * stdlib/tst-strtod.c (main): Add new tests. --- libc/stdlib/strtod_l.c.jj 2004-07-12 20:47:47.000000000 +0200 +++ libc/stdlib/strtod_l.c 2004-07-20 23:49:29.456044788 +0200 @@ -1488,7 +1488,7 @@ / BITS_PER_MP_LIMB], retval, RETURN_LIMB_SIZE, used % BITS_PER_MP_LIMB); - for (i = used / BITS_PER_MP_LIMB; i >= 0; --i) + for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i) retval[i] = 0; } else if (used > 0) --- libc/stdlib/tst-strtod.c.jj 2003-06-27 13:08:48.000000000 +0200 +++ libc/stdlib/tst-strtod.c 2004-07-21 00:02:05.378630841 +0200 @@ -157,6 +157,21 @@ main (int argc, char ** argv) status = 1; } + static struct { const char *str; long double l; } ltests[] = + { + { "42.0000000000000000001", 42.0000000000000000001L }, + { "42.00000000000000000001", 42.00000000000000000001L }, + { "42.000000000000000000001", 42.000000000000000000001L } + }; + int n; + for (n = 0; n < sizeof (ltests) / sizeof (ltests[0]); ++n) + if (strtold (ltests[n].str, NULL) != ltests[n].l) + { + printf ("ltests[%d]: %La != %La\n", n, + strtold (ltests[n].str, NULL), ltests[n].l); + status = 1; + } + status |= long_dbl (); status |= locale_test (); Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |