# HG changeset patch # User Bruno Haible # Date 1169417903 0 # Node ID 0b6b5a675452b6b3785c3ce9e6071c4a067c4373 # Parent d431200a045d55a1d4fe934f169d38f459dd6e74 Ensure errno when strdup fails. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-01-21 Bruno Haible + + * lib/striconv.c (str_iconv): Guarantee errno is set when strdup fails. + * lib/striconveh.c (str_iconveh): Likewise. + 2007-01-21 Bruno Haible * lib/striconveh.h (mem_iconveh): New declaration. diff --git a/lib/striconv.c b/lib/striconv.c --- a/lib/striconv.c +++ b/lib/striconv.c @@ -398,7 +398,13 @@ str_iconv (const char *src, const char *from_codeset, const char *to_codeset) { if (c_strcasecmp (from_codeset, to_codeset) == 0) - return strdup (src); + { + char *result = strdup (src); + + if (result == NULL) + errno = ENOMEM; + return result; + } else { #if HAVE_ICONV diff --git a/lib/striconveh.c b/lib/striconveh.c --- a/lib/striconveh.c +++ b/lib/striconveh.c @@ -920,7 +920,13 @@ enum iconv_ilseq_handler handler) { if (c_strcasecmp (from_codeset, to_codeset) == 0) - return strdup (src); + { + char *result = strdup (src); + + if (result == NULL) + errno = ENOMEM; + return result; + } else { #if HAVE_ICONV