[PATCH v6 5/6] Change copy_fd() to not close input fd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]