submodule: use capture_command

In is_submodule_commit_present, we call run_command followed by a pipe read, which is prone to deadlock. It is unlikely to happen in this case, as rev-list should never produce more than a single line of output, but it does not hurt to avoid an anti-pattern (and using the helper simplifies the setup and cleanup). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Mar 22, 2015 at 23:53 UTC 1d4974c9bcbe3c9c0611cb056730d49c6b0b6b5e
1 file changed +1 -3
submodule.c
+1 -3
@@ -576,12 +576,10 @@ static int is_submodule_commit_present(const char *path, unsigned char sha1[20])
576 cp.env = local_repo_env;
577 cp.git_cmd = 1;
578 cp.no_stdin = 1;
579 - cp.out = -1;
579 cp.dir = path;
581 - if (!run_command(&cp) && !strbuf_read(&buf, cp.out, 1024))
580 + if (!capture_command(&cp, &buf, 1024) && !buf.len)
581 is_present = 1;
582
584 - close(cp.out);
583 strbuf_release(&buf);
584 }
585 return is_present;