From: Bruno Haible Date: Tue, 5 Sep 2006 11:45:14 +0000 (+0000) Subject: (iconv_string): No need to save and restore errno when iconv_alloc succeeded. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d50444df2498a9c9b165ed0497ea66485024a3cb;p=gnulib.git (iconv_string): No need to save and restore errno when iconv_alloc succeeded. --- diff --git a/lib/iconvme.c b/lib/iconvme.c index 943380c035..0e3d7b5ccd 100644 --- a/lib/iconvme.c +++ b/lib/iconvme.c @@ -75,21 +75,24 @@ iconv_string (const char *str, const char *from_codeset, dest = iconv_alloc (cd, str); - { - int save_errno = errno; - - if (iconv_close (cd) < 0 && dest) - { - int save_errno2 = errno; - /* If we didn't have a real error before, make sure we restore - the iconv_close error below. */ - free (dest); - dest = NULL; - errno = save_errno2; - } - else - errno = save_errno; - } + if (dest == NULL) + { + int saved_errno = errno; + iconv_close (cd); + errno = saved_errno; + } + else + { + if (iconv_close (cd) < 0) + { + int saved_errno2 = errno; + /* If we didn't have a real error before, make sure we restore + the iconv_close error below. */ + free (dest); + dest = NULL; + errno = saved_errno2; + } + } #else errno = ENOSYS; #endif