Johannes Schindelin <johannes.schinde...@gmx.de> writes:

> Spotted by Coverity.
>
> Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de>
> ---
>  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;

Reply via email to