changeset 11075:ab7203b2967c

Change c_strtod, c_strtold to no longer call xalloc_die().
author Bruno Haible <bruno@clisp.org>
date Fri, 23 Jan 2009 23:41:16 +0100
parents 8cf858130820
children 990226176856
files ChangeLog NEWS doc/c-strtod.texi lib/c-strtod.c modules/c-strtod modules/c-strtold
diffstat 6 files changed, 32 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-01-23  Bruno Haible  <bruno@clisp.org>
+
+	Make c-strtod, c-strtold usable in libraries.
+	* lib/c-strtod.c: Include string.h instead of xalloc.h.
+	(C_STRTOD): Call strdup instead of xstrdup.
+	* modules/c-strtod (Depends-on): Add strdup-posix, remove xalloc.
+	* modules/c-strtold (Depends-on): Likewise.
+	* doc/c-strtod.texi: Remove the sentence mentioning xalloc_die.
+	* NEWS: Mention the change.
+	Reported by Michael Gold <mgold@ncf.ca>.
+
 2009-01-23  Jim Meyering  <meyering@redhat.com>
 
 	c-strtod: when ENDPTR is non-NULL, set *ENDPTR in new failure path
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,15 @@
 
 Date        Modules         Changes
 
+2009-01-22  c-strtod        This function no longer calls xalloc_die(). If
+            c-strtold       you want to exit the program in case of out-of-
+                            memory, the calling function needs to arrange
+                            for it, like this:
+                                errno = 0;
+                                val = c_strtod (...);
+                                if (val == 0 && errno == ENOMEM)
+                                  xalloc_die ();
+
 2009-01-17  relocatable-prog  In the Makefile.am or Makefile.in, you now also
                             need to set RELOCATABLE_STRIP = :.
 
--- a/doc/c-strtod.texi
+++ b/doc/c-strtod.texi
@@ -23,6 +23,5 @@
 when the current locale's notion of decimal point is a comma @samp{,},
 and no characters outside the basic character set are accepted.
 
-This function aborts via @code{xalloc_die} if it cannot allocate memory.
-On platforms without @code{strtod_l}, it is not safe for use in
+On platforms without @code{strtod_l}, this function is not safe for use in
 multi-threaded applications since it calls @code{setlocale}.
--- a/lib/c-strtod.c
+++ b/lib/c-strtod.c
@@ -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 @@
   if (!locale)
     {
       if (endptr)
-        *endptr = nptr;
+	*endptr = nptr;
       return 0; /* errno is set here */
     }
 
@@ -86,7 +85,13 @@
 
   if (saved_locale)
     {
-      saved_locale = xstrdup (saved_locale);
+      saved_locale = strdup (saved_locale);
+      if (saved_locale == NULL)
+	{
+	  if (endptr)
+	    *endptr = nptr;
+	  return 0; /* errno is set here */
+	}
       setlocale (LC_NUMERIC, "C");
     }
 
--- a/modules/c-strtod
+++ b/modules/c-strtod
@@ -8,7 +8,7 @@
 
 Depends-on:
 extensions
-xalloc
+strdup-posix
 
 configure.ac:
 gl_C_STRTOD
--- a/modules/c-strtold
+++ b/modules/c-strtold
@@ -9,7 +9,7 @@
 
 Depends-on:
 extensions
-xalloc
+strdup-posix
 
 configure.ac:
 gl_C_STRTOLD