From 1873e3cd1a7f5173d20d9060f3be825f31a53a39 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 28 Sep 2005 06:09:24 +0000 Subject: [BZ #1230] 2005-09-27 Ulrich Drepper [BZ #1230] * stdlib/strtod_l.c (STRNCASECMP): Always use C locale object. (TOLOWER_C): Define. Use it when recognizing inf and nan. * stdlib/Makefile (tests): Add bug-strtod2. * stdlib/bug-strtod2.c: New file. --- stdlib/strtod_l.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'stdlib/strtod_l.c') diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index a656789f4c..3a1c1ebd4b 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -1,5 +1,5 @@ /* Convert string representing a number to float value, using given locale. - Copyright (C) 1997,98,2002, 2004 Free Software Foundation, Inc. + Copyright (C) 1997,98,2002,2004,2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -100,7 +100,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, # define ISDIGIT(Ch) __iswdigit_l ((Ch), loc) # define ISXDIGIT(Ch) __iswxdigit_l ((Ch), loc) # define TOLOWER(Ch) __towlower_l ((Ch), loc) -# define STRNCASECMP(S1, S2, N) __wcsncasecmp_l ((S1), (S2), (N), loc) +# define TOLOWER_C(Ch) __towlower_l ((Ch), &_nl_C_locobj) +# define STRNCASECMP(S1, S2, N) \ + __wcsncasecmp_l ((S1), (S2), (N), &_nl_C_locobj) # define STRTOULL(S, E, B) ____wcstoull_l_internal ((S), (E), (B), 0, loc) #else # define STRING_TYPE char @@ -110,7 +112,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, # define ISDIGIT(Ch) __isdigit_l ((Ch), loc) # define ISXDIGIT(Ch) __isxdigit_l ((Ch), loc) # define TOLOWER(Ch) __tolower_l ((Ch), loc) -# define STRNCASECMP(S1, S2, N) __strncasecmp_l ((S1), (S2), (N), loc) +# define TOLOWER_C(Ch) __tolower_l ((Ch), &_nl_C_locobj) +# define STRNCASECMP(S1, S2, N) \ + __strncasecmp_l ((S1), (S2), (N), &_nl_C_locobj) # define STRTOULL(S, E, B) ____strtoull_l_internal ((S), (E), (B), 0, loc) #endif @@ -554,7 +558,7 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) else if (c < L_('0') || c > L_('9')) { /* Check for `INF' or `INFINITY'. */ - if (TOLOWER (c) == L_('i') && STRNCASECMP (cp, L_("inf"), 3) == 0) + if (TOLOWER_C (c) == L_('i') && STRNCASECMP (cp, L_("inf"), 3) == 0) { /* Return +/- infinity. */ if (endptr != NULL) @@ -565,7 +569,7 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; } - if (TOLOWER (c) == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0) + if (TOLOWER_C (c) == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0) { /* Return NaN. */ FLOAT retval = NAN; -- cgit 1.4.1