In copy_fd when write fails we ought to close input file descriptor.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org> ---
Found while looking at the source for inspiration for something else. I did not see any error related to this.
Sam
Show changes to copy.c +5 −2
diff --git a/copy.c b/copy.c index 7100eed..08a3d38 100644 --- a/copy.c +++ b/copy.c @@ -22,11 +22,14 @@ int copy_fd(int ifd, int ofd) buf += written; len -= written; } - else if (!written) + else if (!written) { + close(ifd); return error("copy-fd: write returned 0"); - else + } else { + close(ifd); return error("copy-fd: write returned %s", strerror(errno)); + } } } close(ifd);