Re: [PATCH 3/3] diff: remove parseopts member of struct diff_options
René Scharfe <l.s.r@web.de> writes:
Show 15 quoted lines
> repo_diff_setup() builds the struct option array with git diff's command
> line options and stores a pointer to it in the parseopts member of
> struct diff_options. The array is freed by diff_setup_done(), but not
> by release_revisions(). repo_init_revisions() calls repo_diff_setup(),
> thus calling repo_init_revisions() then release_revisions() leaks it.
>
> We could free the array in release_revisions() as well to plug that
> leak, but there is a better way: Only build it when needed. Move the
> get_diff_parseopts() calls to the two places that use the array, free it
> after use and get rid of the parseopts member.
>
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
> diff.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
I think this hunk is missing?
diff.h | 1 -
1 file changed, 1 deletion(-)
diff --git c/diff.h w/diff.h
index 5229f20486..6840499844 100644
--- c/diff.h
+++ w/diff.h
@@ -394,7 +394,6 @@ struct diff_options {
unsigned color_moved_ws_handling;
struct repository *repo;
- struct option *parseopts;
struct strmap *additional_path_headers;
int no_free;