]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(c_strtod): Save and restore original LC_NUMERIC setting,
authorJim Meyering <jim@meyering.net>
Sat, 29 Nov 2003 11:55:52 +0000 (11:55 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 29 Nov 2003 11:55:52 +0000 (11:55 +0000)
in case it was different from the environment-derived value.
Patch by Paul Eggert.

lib/c-strtod.c

index b3fac020a997e7fc01b55b74e87dad851de9f142..b3ce2b43a6e5c58c9e432025e2ec0a2e9091378f 100644 (file)
@@ -27,8 +27,21 @@ double
 c_strtod (char const *nptr, char **endptr)
 {
   double r;
-  setlocale (LC_NUMERIC, "C");
+  char *saved_locale = setlocale (LC_NUMERIC, NULL);
+
+  if (saved_locale)
+    {
+      saved_locale = xstrdup (saved_locale);
+      setlocale (LC_NUMERIC, "C");
+    }
+
   r = strtod (nptr, endptr);
-  setlocale (LC_NUMERIC, "");
+
+  if (saved_locale)
+    {
+      setlocale (LC_NUMERIC, saved_locale);
+      free (saved_locale);
+    }
+
   return r;
 }