X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fc-strtod.c;h=a5973d477e27795162241a233aae3ef9f1e007d6;hb=893f75bfc4d025e22075e1c441e594cc6b738066;hp=51e996e5da0246a70f5a62ddd7f9310fd30b5798;hpb=f6d751259a21cbc6d4a95ea0fe454df2bfcca59d;p=gnulib.git diff --git a/lib/c-strtod.c b/lib/c-strtod.c index 51e996e5d..a5973d477 100644 --- a/lib/c-strtod.c +++ b/lib/c-strtod.c @@ -1,6 +1,6 @@ /* Convert string to double, using the C locale. - Copyright (C) 2003, 2004, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2003-2004, 2006, 2009-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ # define STRTOD strtod #endif -#ifdef LC_ALL_MASK +#if defined LC_ALL_MASK && (LONG ? HAVE_STRTOLD_L : HAVE_STRTOD_L) /* Cache for the C locale object. Marked volatile so that different threads see the same value @@ -67,13 +67,13 @@ C_STRTOD (char const *nptr, char **endptr) { DOUBLE r; -#ifdef LC_ALL_MASK +#if defined LC_ALL_MASK && (LONG ? HAVE_STRTOLD_L : HAVE_STRTOD_L) locale_t locale = c_locale (); if (!locale) { if (endptr) - *endptr = (char *) nptr; + *endptr = (char *) nptr; return 0; /* errno is set here */ } @@ -87,11 +87,11 @@ C_STRTOD (char const *nptr, char **endptr) { saved_locale = strdup (saved_locale); if (saved_locale == NULL) - { - if (endptr) - *endptr = (char *) nptr; - return 0; /* errno is set here */ - } + { + if (endptr) + *endptr = (char *) nptr; + return 0; /* errno is set here */ + } setlocale (LC_NUMERIC, "C"); }