Johannes Schindelin <[email protected]> writes:
> Spotted by Coverity.
>
> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
> builtin/difftool.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/builtin/difftool.c b/builtin/difftool.c
> index 1354d0e4625..a4f1d117ef6 100644
> --- a/builtin/difftool.c
> +++ b/builtin/difftool.c
> @@ -226,6 +226,7 @@ static void changed_files(struct hashmap *result, const
> char *index_path,
> hashmap_entry_init(entry, strhash(buf.buf));
> hashmap_add(result, entry);
> }
> + fclose(fp);
> if (finish_command(&diff_files))
> die("diff-files did not exit properly");
> strbuf_release(&index_env);
This one looks sensible.
> @@ -497,6 +498,7 @@ static int run_dir_diff(const char *extcmd, int symlinks,
> const char *prefix,
> }
> }
>
> + fclose(fp);
The huge loop we see in the pre-context of this hunk has many
"return"s and "goto finish"es that can leave fp still open; while
this patch does not hurt, it is probably somewhat insufficient.
> if (finish_command(&child)) {
> ret = error("error occurred running diff --raw");
> goto finish;