From 79f0ba1547a34b3a9791491f9bbfe4048026f373 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 23 Feb 2018 02:00:54 -0500 Subject: strbuf_read_file(): preserve errno across close() call If we encounter a read error, the user may want to report it by looking at errno. However, our close() call may clobber errno, leading to confusing results. Let's save and restore it in the error case. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano diff --git a/strbuf.c b/strbuf.c index 1df674e..5f138ed 100644 --- a/strbuf.c +++ b/strbuf.c @@ -612,14 +612,18 @@ ssize_t strbuf_read_file(struct strbuf *sb, const char *path, size_t hint) { int fd; ssize_t len; + int saved_errno; fd = open(path, O_RDONLY); if (fd < 0) return -1; len = strbuf_read(sb, fd, hint); + saved_errno = errno; close(fd); - if (len < 0) + if (len < 0) { + errno = saved_errno; return -1; + } return len; } -- cgit v0.10.2-6-g49f6