Junio pointed out to me that read() won't return EPIPE like write() does, so there is no reason for us to exit successfully if we get an EPIPE error while in read_or_die. Instead we should just die if we get any error from read() while in read_or_die as there is no reasonable recovery. Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- write_or_die.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) diff --git a/write_or_die.c b/write_or_die.c index a56d992..8cf6486 100644 --- a/write_or_die.c +++ b/write_or_die.c @@ -9,11 +9,8 @@ void read_or_die(int fd, void *buf, size_t count) loaded = xread(fd, p, count); if (loaded == 0) die("unexpected end of file"); - else if (loaded < 0) { - if (errno == EPIPE) - exit(0); + else if (loaded < 0) die("read error (%s)", strerror(errno)); - } count -= loaded; p += loaded; } -- 1.4.4.3.g2e63 - 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