summaryrefslogtreecommitdiff
path: root/stdlib/strtod.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/strtod.c')
-rw-r--r--stdlib/strtod.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/stdlib/strtod.c b/stdlib/strtod.c
index 0de96a571b..7502799edf 100644
--- a/stdlib/strtod.c
+++ b/stdlib/strtod.c
@@ -1,7 +1,7 @@
/* Read decimal floating point numbers.
This file is part of the GNU C Library.
- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
@@ -892,6 +892,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
{
if ((exponent & expbit) != 0)
{
+ size_t size = ttab->arraysize - _FPIO_CONST_OFFSET;
mp_limb_t cy;
exponent ^= expbit;
@@ -901,13 +902,14 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
bits follow. */
if (numsize >= ttab->arraysize - _FPIO_CONST_OFFSET)
cy = __mpn_mul (pdest, psrc, numsize,
- &ttab->array[_FPIO_CONST_OFFSET],
- ttab->arraysize - _FPIO_CONST_OFFSET);
+ &__tens[ttab->arrayoff
+ + _FPIO_CONST_OFFSET],
+ size);
else
- cy = __mpn_mul (pdest, &ttab->array[_FPIO_CONST_OFFSET],
- ttab->arraysize - _FPIO_CONST_OFFSET,
- psrc, numsize);
- numsize += ttab->arraysize - _FPIO_CONST_OFFSET;
+ cy = __mpn_mul (pdest, &__tens[ttab->arrayoff
+ + _FPIO_CONST_OFFSET],
+ size, psrc, numsize);
+ numsize += size;
if (cy == 0)
--numsize;
SWAP (psrc, pdest);
@@ -1062,12 +1064,13 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
if (densize == 0)
{
densize = ttab->arraysize - _FPIO_CONST_OFFSET;
- memcpy (psrc, &ttab->array[_FPIO_CONST_OFFSET],
+ memcpy (psrc, &__tens[ttab->arrayoff + _FPIO_CONST_OFFSET],
densize * sizeof (mp_limb_t));
}
else
{
- cy = __mpn_mul (pdest, &ttab->array[_FPIO_CONST_OFFSET],
+ cy = __mpn_mul (pdest, &__tens[ttab->arrayoff
+ + _FPIO_CONST_OFFSET],
ttab->arraysize - _FPIO_CONST_OFFSET,
psrc, densize);
densize += ttab->arraysize - _FPIO_CONST_OFFSET;