summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2018-03-06 14:54:08 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-03-06 14:54:08 -0800
commit6c3e6f6fcbdd12c70a849e4e1be57d82edb8f14f (patch)
tree0453fa505a7653e4df757d5482578c67ba409e96
parentMerge branch 'bw/c-plus-plus' (diff)
parentstrbuf_read_file(): preserve errno across close() call (diff)
downloadtgif-6c3e6f6fcbdd12c70a849e4e1be57d82edb8f14f.tar.xz
Merge branch 'jk/strbuf-read-file-close-error'
Code clean-up. * jk/strbuf-read-file-close-error: strbuf_read_file(): preserve errno across close() call
-rw-r--r--strbuf.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/strbuf.c b/strbuf.c
index 1df674e919..5f138ed3c8 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;
}