summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2017-08-10 22:56:40 +0200
committerJunio C Hamano <gitster@pobox.com>2017-08-10 14:41:51 -0700
commit642956cf455ff8635be32b3160b12369da73cfe2 (patch)
tree28219e7da107a88581507855d39c78548dd2208b
parent3d9c5b5c4461957fbbc0479e037990db04ebb740 (diff)
downloadgit-rs/strbuf-getwholeline-fix.tar.gz
strbuf: clear errno before calling getdelim(3)rs/strbuf-getwholeline-fix
getdelim(3) returns -1 at the end of the file and if it encounters an error, but sets errno only in the latter case. Set errno to zero before calling it to avoid misdiagnosing an out-of-memory condition due to a left-over value from some other function call. Reported-by: Yaroslav Halchenko <yoh@onerussian.com> Suggested-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--strbuf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/strbuf.c b/strbuf.c
index ace58e7367..977acba31b 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -472,6 +472,7 @@ int strbuf_getwholeline(struct strbuf *sb, FILE *fp, int term)
/* Translate slopbuf to NULL, as we cannot call realloc on it */
if (!sb->alloc)
sb->buf = NULL;
+ errno = 0;
r = getdelim(&sb->buf, &sb->alloc, term, fp);
if (r > 0) {