Correctly determine whether pow is available in libc on AIX 7 with xlc.
[gnulib.git] / lib / c-strtod.c
index 77e5aaf..38d472b 100644 (file)
@@ -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-2010 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
@@ -24,8 +24,7 @@
 #include <errno.h>
 #include <locale.h>
 #include <stdlib.h>
-
-#include "xalloc.h"
+#include <string.h>
 
 #if LONG
 # define C_STRTOD c_strtold
@@ -74,7 +73,7 @@ C_STRTOD (char const *nptr, char **endptr)
   if (!locale)
     {
       if (endptr)
-        *endptr = nptr;
+        *endptr = (char *) nptr;
       return 0; /* errno is set here */
     }
 
@@ -86,7 +85,13 @@ C_STRTOD (char const *nptr, char **endptr)
 
   if (saved_locale)
     {
-      saved_locale = xstrdup (saved_locale);
+      saved_locale = strdup (saved_locale);
+      if (saved_locale == NULL)
+        {
+          if (endptr)
+            *endptr = (char *) nptr;
+          return 0; /* errno is set here */
+        }
       setlocale (LC_NUMERIC, "C");
     }