From: Jim Meyering <jim@meyering.net>
Date: Thu, 23 Aug 2007 08:33:16 +0000 (+0000)
Subject: Getdelim touchup.
X-Git-Tag: cvs-readonly~53
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=3156a948b9bb9d2f15d636c86864b3baa182de2a;p=gnulib.git

Getdelim touchup.
* lib/getdelim.c (getdelim): Don't bother to save/restore errno
around the funlockfile call, since funlockfile never sets errno.
Don't set errno upon failed realloc.
---

diff --git a/ChangeLog b/ChangeLog
index da49d88c86..9d3520261b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-08-23  Jim Meyering  <jim@meyering.net>
+
+	Getdelim touchup.
+	* lib/getdelim.c (getdelim): Don't bother to save/restore errno
+	around the funlockfile call, since funlockfile never sets errno.
+	Don't set errno upon failed realloc.
+
 2007-08-22  Eric Blake  <ebb9@byu.net>
 
 	Getline touchups.
diff --git a/lib/getdelim.c b/lib/getdelim.c
index ded1d9cf58..0547c7fae2 100644
--- a/lib/getdelim.c
+++ b/lib/getdelim.c
@@ -58,7 +58,6 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
 {
   ssize_t result;
   size_t cur_len = 0;
-  int e; /* Preserve errno across funlockfile.  */
 
   if (lineptr == NULL || n == NULL || fp == NULL)
     {
@@ -75,7 +74,6 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
       if (*lineptr == NULL)
 	{
 	  result = -1;
-	  e = ENOMEM;
 	  goto unlock_return;
 	}
     }
@@ -88,7 +86,6 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
       if (i == EOF)
 	{
 	  result = -1;
-	  e = errno;
 	  break;
 	}
 
@@ -105,7 +102,7 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
 	  if (cur_len + 1 >= needed)
 	    {
 	      result = -1;
-	      e = EOVERFLOW;
+	      errno = EOVERFLOW;
 	      goto unlock_return;
 	    }
 
@@ -113,7 +110,6 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
 	  if (new_lineptr == NULL)
 	    {
 	      result = -1;
-	      e = ENOMEM;
 	      goto unlock_return;
 	    }
 
@@ -131,8 +127,7 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
   result = cur_len ? cur_len : result;
 
  unlock_return:
-  funlockfile (fp);
-  if (result == -1)
-    errno = e;
+  funlockfile (fp); /* doesn't set errno */
+
   return result;
 }