mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize empty parsed strings. * stdlib/Makefile (tests): Add tst-strtod2. * stdlib/tst-strtod2.c: New file.
This commit is contained in:
@ -1,5 +1,11 @@
|
|||||||
2006-12-09 Ulrich Drepper <drepper@redhat.com>
|
2006-12-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #3664]
|
||||||
|
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
|
||||||
|
empty parsed strings.
|
||||||
|
* stdlib/Makefile (tests): Add tst-strtod2.
|
||||||
|
* stdlib/tst-strtod2.c: New file.
|
||||||
|
|
||||||
[BZ #3673]
|
[BZ #3673]
|
||||||
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
|
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
|
||||||
computation.
|
computation.
|
||||||
|
@ -67,7 +67,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
|
|||||||
tst-xpg-basename tst-random tst-random2 tst-bsearch \
|
tst-xpg-basename tst-random tst-random2 tst-bsearch \
|
||||||
tst-limits tst-rand48 bug-strtod tst-setcontext \
|
tst-limits tst-rand48 bug-strtod tst-setcontext \
|
||||||
test-a64l tst-qsort tst-system testmb2 bug-strtod2 \
|
test-a64l tst-qsort tst-system testmb2 bug-strtod2 \
|
||||||
tst-atof1 tst-atof2
|
tst-atof1 tst-atof2 tst-strtod2
|
||||||
|
|
||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
|
@ -662,20 +662,20 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
|
|||||||
|
|
||||||
/* If no other digit but a '0' is found the result is 0.0.
|
/* If no other digit but a '0' is found the result is 0.0.
|
||||||
Return current read pointer. */
|
Return current read pointer. */
|
||||||
if ((c < L_('0') || c > L_('9'))
|
if (!((c >= L_('0') && c <= L_('9'))
|
||||||
&& (base == 16 && (c < (CHAR_TYPE) TOLOWER (L_('a'))
|
|| (base == 16 && ((CHAR_TYPE) TOLOWER (c) >= L_('a')
|
||||||
|| c > (CHAR_TYPE) TOLOWER (L_('f'))))
|
&& (CHAR_TYPE) TOLOWER (c) <= L_('f')))
|
||||||
#ifdef USE_WIDE_CHAR
|
#ifdef USE_WIDE_CHAR
|
||||||
&& c != (wint_t) decimal
|
|| c == (wint_t) decimal
|
||||||
#else
|
#else
|
||||||
&& ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
|
|| ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
|
||||||
if (decimal[cnt] != cp[cnt])
|
if (decimal[cnt] != cp[cnt])
|
||||||
break;
|
break;
|
||||||
decimal[cnt] != '\0'; })
|
decimal[cnt] == '\0'; })
|
||||||
#endif
|
#endif
|
||||||
&& (base == 16 && (cp == start_of_digits
|
|| (base == 16 && (cp != start_of_digits
|
||||||
|| (CHAR_TYPE) TOLOWER (c) != L_('p')))
|
&& (CHAR_TYPE) TOLOWER (c) == L_('p')))
|
||||||
&& (base != 16 && (CHAR_TYPE) TOLOWER (c) != L_('e')))
|
|| (base != 16 && (CHAR_TYPE) TOLOWER (c) == L_('e'))))
|
||||||
{
|
{
|
||||||
#ifdef USE_WIDE_CHAR
|
#ifdef USE_WIDE_CHAR
|
||||||
tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
|
tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
|
||||||
|
Reference in New Issue
Block a user