Message ID | patch-v2-14.27-38f4f1c4ecb-20220323T203149Z-avarab@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | revision.[ch]: add and use release_revisions() | expand |
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > diff --git a/submodule.c b/submodule.c > index 0510cb193b6..285c1896c9e 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -638,7 +638,7 @@ void show_submodule_diff_summary(struct diff_options *o, const char *path, > struct object_id *one, struct object_id *two, > unsigned dirty_submodule) > { > - struct rev_info rev; > + struct rev_info rev = { 0 }; Exactly the same comment as an earlier step about bundle and bisect applies here. > struct commit *left = NULL, *right = NULL; > struct commit_list *merge_bases = NULL; > struct repository *sub; > @@ -664,6 +664,7 @@ void show_submodule_diff_summary(struct diff_options *o, const char *path, > print_submodule_diff_summary(sub, &rev, o); > > out: > + release_revisions(&rev); > if (merge_bases) > free_commit_list(merge_bases); > clear_commit_marks(left, ~0);
diff --git a/submodule.c b/submodule.c index 0510cb193b6..285c1896c9e 100644 --- a/submodule.c +++ b/submodule.c @@ -638,7 +638,7 @@ void show_submodule_diff_summary(struct diff_options *o, const char *path, struct object_id *one, struct object_id *two, unsigned dirty_submodule) { - struct rev_info rev; + struct rev_info rev = { 0 }; struct commit *left = NULL, *right = NULL; struct commit_list *merge_bases = NULL; struct repository *sub; @@ -664,6 +664,7 @@ void show_submodule_diff_summary(struct diff_options *o, const char *path, print_submodule_diff_summary(sub, &rev, o); out: + release_revisions(&rev); if (merge_bases) free_commit_list(merge_bases); clear_commit_marks(left, ~0);
Use release_revisions() on the the "struct rev_info" in show_submodule_diff_summary() where we need to pre-initialize with "{ 0 }" to make sure that we won't segfault when calling release_revisions(). Most functions that use "struct rev_info" will call repo_init_revisions() early, which will do an equivalent memset(). In this case we might "goto out" before doing the equivalent of that operation, see the "goto" on "(!left || !right || !sub)" added in 8e6df65015f (submodule: refactor show_submodule_summary with helper function, 2016-08-31). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- submodule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)