зеркало из https://github.com/microsoft/git.git
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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
ffa9524972
Коммит
79f0ba1547
6
strbuf.c
6
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче