range-diff: simplify code spawning `git log`

Previously, we waited for the child process to be finished in every
failing code path as well as at the end of the function
`show_range_diff()`.

However, we do not need to wait that long. Directly after reading the
output of the child process, we can wrap up the child process.

This also has the advantage that we don't do a bunch of unnecessary work
in case `finish_command()` returns with an error anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2021-02-04 20:07:51 +00:00 коммит произвёл Junio C Hamano
Родитель a2d474adf3
Коммит 5189bb8724
1 изменённых файлов: 2 добавлений и 5 удалений

Просмотреть файл

@ -80,6 +80,8 @@ static int read_patches(const char *range, struct string_list *list,
finish_command(&cp);
return -1;
}
if (finish_command(&cp))
return -1;
line = contents.buf;
size = contents.len;
@ -101,7 +103,6 @@ static int read_patches(const char *range, struct string_list *list,
string_list_clear(list, 1);
strbuf_release(&buf);
strbuf_release(&contents);
finish_command(&cp);
return -1;
}
util->matching = -1;
@ -117,7 +118,6 @@ static int read_patches(const char *range, struct string_list *list,
string_list_clear(list, 1);
strbuf_release(&buf);
strbuf_release(&contents);
finish_command(&cp);
return -1;
}
@ -227,9 +227,6 @@ static int read_patches(const char *range, struct string_list *list,
strbuf_release(&buf);
free(current_filename);
if (finish_command(&cp))
return -1;
return 0;
}