]> git.ipfire.org Git - thirdparty/git.git/commit - strbuf.c
strbuf_read(): skip unnecessary strbuf_grow() at eof
authorJim Hill <gjthill@gmail.com>
Sun, 31 May 2015 18:16:45 +0000 (11:16 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Aug 2015 19:51:13 +0000 (12:51 -0700)
commit3ebbd00cf3c5a7c6f90e2fed8adaf0c5145fb4ac
tree128975e73a85e64cc9ddb6db9896b7e5ec94d575
parent282616c72d1d08a77ca4fe1186cb708c38408d87
strbuf_read(): skip unnecessary strbuf_grow() at eof

The loop in strbuf_read() uses xread() repeatedly while extending
the strbuf until the call returns zero.  If the buffer is
sufficiently large to begin with, this results in xread()
returning the remainder of the file to the end (returning
non-zero), the loop extending the strbuf, and then making another
call to xread() to have it return zero.

By using read_in_full(), we can tell when the read reached the end
of file: when it returns less than was requested, it's eof.  This
way we can avoid an extra iteration that allocates an extra 8kB
that is never used.

Signed-off-by: Jim Hill <gjthill@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
strbuf.c