The caller opened the fd, so it should be responsible for closing it.

Signed-off-by: Steffen Prohaska <proha...@zib.de>
---
 copy.c     | 5 +----
 lockfile.c | 3 +++
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/copy.c b/copy.c
index a7f58fd..d0a1d82 100644
--- a/copy.c
+++ b/copy.c
@@ -10,7 +10,6 @@ int copy_fd(int ifd, int ofd)
                        break;
                if (len < 0) {
                        int read_error = errno;
-                       close(ifd);
                        return error("copy-fd: read returned %s",
                                     strerror(read_error));
                }
@@ -21,17 +20,14 @@ int copy_fd(int ifd, int ofd)
                                len -= written;
                        }
                        else if (!written) {
-                               close(ifd);
                                return error("copy-fd: write returned 0");
                        } else {
                                int write_error = errno;
-                               close(ifd);
                                return error("copy-fd: write returned %s",
                                             strerror(write_error));
                        }
                }
        }
-       close(ifd);
        return 0;
 }
 
@@ -60,6 +56,7 @@ int copy_file(const char *dst, const char *src, int mode)
                return fdo;
        }
        status = copy_fd(fdi, fdo);
+       close(fdi);
        if (close(fdo) != 0)
                return error("%s: close error: %s", dst, strerror(errno));
 
diff --git a/lockfile.c b/lockfile.c
index 2564a7f..2448d30 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -224,8 +224,11 @@ int hold_lock_file_for_append(struct lock_file *lk, const 
char *path, int flags)
        } else if (copy_fd(orig_fd, fd)) {
                if (flags & LOCK_DIE_ON_ERROR)
                        exit(128);
+               close(orig_fd);
                close(fd);
                return -1;
+       } else {
+               close(orig_fd);
        }
        return fd;
 }
-- 
2.1.0.8.gf3a29c8

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to