On Thu, May 26, 2011 at 03:59:14PM +0200, Jim Meyering wrote: > * sha1_file.c (index_stream): Don't check for size_t < 0. > read_in_full does not return an indication of failure. Are you sure about that? $ sed -n '/read_in_full/,/^}/p' wrapper.c ssize_t read_in_full(int fd, void *buf, size_t count) { char *p = buf; ssize_t total = 0; while (count > 0) { ssize_t loaded = xread(fd, p, count); if (loaded <= 0) return total ? total : loaded; count -= loaded; p += loaded; total += loaded; } return total; } It looks like if we get -1 on the _first_ read, we will then return -1. Subsequent errors are then ignored, and we return the (possibly truncated) result. Which, to be honest, seems kind of insane to me. I'd think: while (count > 0) { ssize_t loaded = xread(fd, p, count); if (loaded < 0) return loaded; if (loaded == 0) return total; ... } would be much more sensible semantics. -Peff -- 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