From 5965a9b1d0011a0340b57e1faa0b8a3f7997c519 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 23 Jan 2009 23:41:16 +0100 Subject: [PATCH] Change c_strtod, c_strtold to no longer call xalloc_die(). --- ChangeLog | 11 +++++++++++ NEWS | 9 +++++++++ doc/c-strtod.texi | 3 +-- lib/c-strtod.c | 13 +++++++++---- modules/c-strtod | 2 +- modules/c-strtold | 2 +- 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66a6632c2..42c3aca0a 100644 --- 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 index 650c4161f..bf48451f5 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,15 @@ User visible incompatible changes 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 index 486b6e0b6..9d22e9360 100644 --- a/doc/c-strtod.texi +++ b/doc/c-strtod.texi @@ -23,6 +23,5 @@ In particular, only a period @samp{.} is accepted as decimal point, even 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 index 77e5aaf80..9723e0b78 100644 --- 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 @@ C_STRTOD (char const *nptr, char **endptr) if (!locale) { if (endptr) - *endptr = nptr; + *endptr = 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 = nptr; + return 0; /* errno is set here */ + } setlocale (LC_NUMERIC, "C"); } diff --git a/modules/c-strtod b/modules/c-strtod index f82a98863..7212e09b0 100644 --- a/modules/c-strtod +++ b/modules/c-strtod @@ -8,7 +8,7 @@ m4/c-strtod.m4 Depends-on: extensions -xalloc +strdup-posix configure.ac: gl_C_STRTOD diff --git a/modules/c-strtold b/modules/c-strtold index d9d5a18ce..95439b120 100644 --- a/modules/c-strtold +++ b/modules/c-strtold @@ -9,7 +9,7 @@ m4/c-strtod.m4 Depends-on: extensions -xalloc +strdup-posix configure.ac: gl_C_STRTOLD -- 2.11.0