diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-12-27 11:16:24 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-12-27 11:16:24 -0800 |
commit | a13e45f1e7e6fc02d4e10e0589578a77e84f3ffb (patch) | |
tree | b05ce2f10a916bc9b60b5eb438b0db8f0e2238ad | |
parent | Merge branch 'rs/fmt-merge-msg-string-leak-fix' (diff) | |
parent | strbuf: release memory on read error in strbuf_read_once() (diff) | |
download | tgif-a13e45f1e7e6fc02d4e10e0589578a77e84f3ffb.tar.xz |
Merge branch 'rs/strbuf-read-once-reset-length'
Leakfix.
* rs/strbuf-read-once-reset-length:
strbuf: release memory on read error in strbuf_read_once()
-rw-r--r-- | strbuf.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -386,12 +386,15 @@ ssize_t strbuf_read(struct strbuf *sb, int fd, size_t hint) ssize_t strbuf_read_once(struct strbuf *sb, int fd, size_t hint) { + size_t oldalloc = sb->alloc; ssize_t cnt; strbuf_grow(sb, hint ? hint : 8192); cnt = xread(fd, sb->buf + sb->len, sb->alloc - sb->len - 1); if (cnt > 0) strbuf_setlen(sb, sb->len + cnt); + else if (oldalloc == 0) + strbuf_release(sb); return cnt; } |