# define STRTOD_L strtod_l
#endif
-/* c_strtold falls back on strtod if strtold isn't declared. */
-#if LONG && HAVE_DECL_STRTOLD
+/* c_strtold falls back on strtod if strtold doesn't conform to C99. */
+#if LONG && HAVE_C99_STRTOLD
# define STRTOD strtold
#else
# define STRTOD strtod
#else
- char *saved_locale = setlocale (LC_ALL, NULL);
+ char *saved_locale = setlocale (LC_NUMERIC, NULL);
if (saved_locale)
{
saved_locale = xstrdup (saved_locale);
- setlocale (LC_ALL, "C");
+ setlocale (LC_NUMERIC, "C");
}
r = STRTOD (nptr, endptr);
if (saved_locale)
{
- setlocale (LC_ALL, saved_locale);
+ setlocale (LC_NUMERIC, saved_locale);
free (saved_locale);
}