submodule.c: convert is_submodule_modified to use strbuf_getwholeline
commitaf6865a7f1e1d915d3b63e998226028ca4abb6ee
authorStefan Beller <sbeller@google.com>
Sat, 25 Mar 2017 00:36:06 +0000 (24 17:36 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Mar 2017 16:48:19 +0000 (27 09:48 -0700)
treef94c62954442c50635b09974848596c79f2f890e
parent64f9a946f07d2ca00b34c466654a3f608c78b6af
submodule.c: convert is_submodule_modified to use strbuf_getwholeline

Instead of implementing line reading yet again, make use of our beautiful
library function to read one line.  By using strbuf_getwholeline instead
of strbuf_read, we avoid having to allocate memory for the entire child
process output at once.  That is, we limit maximum memory usage.
Also we can start processing the output as it comes in, no need to
wait for all of it.

Once we know all information that we care about, we can terminate
the child early. In that case we do not care about its exit code as well.
By just closing our side of the pipe the child process will get a SIGPIPE
signal, which it will not report nor do we report it in finish_command,
ac78663b0d (run-command: don't warn on SIGPIPE deaths, 2015-12-29).

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/t7506-status-submodule.sh