From: Bruno Haible <bruno@clisp.org>
Date: Mon, 7 Dec 2009 00:02:50 +0000 (+0100)
Subject: cloexec: Fix possible compilation error.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68145a074c0cdc9eff8364a62530da01a5f39bcd;p=pspp

cloexec: Fix possible compilation error.
---

diff --git a/ChangeLog b/ChangeLog
index be28f93c11..977285c1fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-06  Bruno Haible  <bruno@clisp.org>
+
+	* lib/cloexec.c (dup_cloexec): Fix handling of _gl_register_dup return
+	value.
+
 2009-12-06  Bruno Haible  <bruno@clisp.org>
 
 	* lib/progname.c: Include stdio.h, stdlib.h.
diff --git a/lib/cloexec.c b/lib/cloexec.c
index b862cc6da3..5479477e51 100644
--- a/lib/cloexec.c
+++ b/lib/cloexec.c
@@ -79,7 +79,8 @@ set_cloexec_flag (int desc, bool value)
    prior to exec or spawn.  Returns -1 and sets errno if FD could not
    be duplicated.  */
 
-int dup_cloexec (int fd)
+int
+dup_cloexec (int fd)
 {
   int nfd;
 
@@ -107,6 +108,7 @@ int dup_cloexec (int fd)
                         FALSE,                      /* InheritHandle */
                         DUPLICATE_SAME_ACCESS))     /* Options */
     {
+      /* TODO: Translate GetLastError () into errno.  */
       errno = EMFILE;
       return -1;
     }
@@ -133,12 +135,12 @@ int dup_cloexec (int fd)
   nfd = fcntl (fd, F_DUPFD_CLOEXEC, 0);
 #  if REPLACE_FCHDIR
   if (0 <= nfd)
-    result = _gl_register_dup (fd, nfd);
+    nfd = _gl_register_dup (fd, nfd);
 #  endif
 
 # else /* !F_DUPFD_CLOEXEC */
   nfd = dup (fd);
-  if (0 <= nfd && set_cloexec_flag (nfd, true))
+  if (0 <= nfd && set_cloexec_flag (nfd, true) < 0)
     {
       int saved_errno = errno;
       close (nfd);