cloexec: Fix possible compilation error.
authorBruno Haible <bruno@clisp.org>
Mon, 7 Dec 2009 00:02:50 +0000 (01:02 +0100)
committerBruno Haible <bruno@clisp.org>
Mon, 7 Dec 2009 00:02:50 +0000 (01:02 +0100)
ChangeLog
lib/cloexec.c

index be28f93c11c3545968344cf33472089188b1f21d..977285c1fb03ec66ae90f2ca9a67039a4385e111 100644 (file)
--- 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.
index b862cc6da36e422bad49d4a7302d821a500c1516..5479477e51e49e31575a1f99c85cd291a083bd6e 100644 (file)
@@ -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);