Commits

Anonymous committed 8b1f6de

copy.c: copy_fd - correctly report write errors

Previously, the errno could have been lost due to an intervening
close() call.

This patch also contains minor cosmetic changes.

Signed-off-by: Ariel Badichi <abadichi@bezeqint.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Comments (0)

Files changed (1)

 		if (!len)
 			break;
 		if (len < 0) {
-			int read_error;
-			read_error = errno;
+			int read_error = errno;
 			close(ifd);
 			return error("copy-fd: read returned %s",
 				     strerror(read_error));
 				close(ifd);
 				return error("copy-fd: write returned 0");
 			} else {
+				int write_error = errno;
 				close(ifd);
 				return error("copy-fd: write returned %s",
-					     strerror(errno));
+					     strerror(write_error));
 			}
 		}
 	}
 	}
 	status = copy_fd(fdi, fdo);
 	if (close(fdo) != 0)
-		return error("%s: write error: %s", dst, strerror(errno));
+		return error("%s: close error: %s", dst, strerror(errno));
 
 	if (!status && adjust_shared_perm(dst))
 		return -1;