The caller opened the fd, so it should be responsible for closing it. Signed-off-by: Steffen Prohaska <prohaska@xxxxxx> --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html