changeset 7251:db39032b0043

(iconv_string): No need to save and restore errno when iconv_alloc succeeded.
author Bruno Haible <bruno@clisp.org>
date Tue, 05 Sep 2006 11:45:14 +0000
parents b188d0ecb399
children 86ec317a7b82
files lib/iconvme.c
diffstat 1 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lib/iconvme.c
+++ b/lib/iconvme.c
@@ -75,21 +75,24 @@
 
   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