# HG changeset patch # User Bruno Haible # Date 1232750476 -3600 # Node ID ab7203b2967ce432ee520e5256076ca01d936a85 # Parent 8cf85813082025fe8d5d608b73a12f6e52a68f28 Change c_strtod, c_strtold to no longer call xalloc_die(). diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-01-23 Bruno Haible + + 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 . + 2009-01-23 Jim Meyering c-strtod: when ENDPTR is non-NULL, set *ENDPTR in new failure path diff --git a/NEWS b/NEWS --- 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 = :. diff --git a/doc/c-strtod.texi b/doc/c-strtod.texi --- 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}. diff --git a/lib/c-strtod.c b/lib/c-strtod.c --- a/lib/c-strtod.c +++ b/lib/c-strtod.c @@ -24,8 +24,7 @@ #include #include #include - -#include "xalloc.h" +#include #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"); } diff --git a/modules/c-strtod b/modules/c-strtod --- a/modules/c-strtod +++ b/modules/c-strtod @@ -8,7 +8,7 @@ Depends-on: extensions -xalloc +strdup-posix configure.ac: gl_C_STRTOD diff --git a/modules/c-strtold b/modules/c-strtold --- a/modules/c-strtold +++ b/modules/c-strtold @@ -9,7 +9,7 @@ Depends-on: extensions -xalloc +strdup-posix configure.ac: gl_C_STRTOLD