Handle a revision that only creates a new tag correctly.
[gitweb.git] / copy.c
diff --git a/copy.c b/copy.c
index 20092757d395dfa4af99a6062e5e2cc0fa5e00c3..e1cd5d06503d93f6b400a3911e6b61ff327190ca 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -10,10 +10,13 @@ int copy_fd(int ifd, int ofd)
                if (!len)
                        break;
                if (len < 0) {
+                       int read_error;
                        if (errno == EAGAIN)
                                continue;
+                       read_error = errno;
+                       close(ifd);
                        return error("copy-fd: read returned %s",
-                                    strerror(errno));
+                                    strerror(read_error));
                }
                while (1) {
                        int written = write(ofd, buf, len);