]> git.ipfire.org Git - thirdparty/git.git/commitdiff
range-diff: simplify code spawning `git log`
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 4 Feb 2021 20:07:51 +0000 (20:07 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Feb 2021 01:16:42 +0000 (17:16 -0800)
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>
range-diff.c

index a83c386ffc54f949bdc8b50e2b28335ac98c7dbb..48d6e26f1a4b8a3170c171e7b0f67b82bec014ce 100644 (file)
@@ -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;
 }