[RFC PATCH v2 2/4] ref-filter API user: add and use a ref_sorting_release()
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Oct 20, 2021, 13:24 UTC
- Message-ID
- <RFC-patch-v2-2.4-0ae71c19ab7-20211020T131627Z-avarab@gmail.com>
- In-Reply-To
- <RFC-cover-v2-0.4-00000000000-20211020T131627Z-avarab@gmail.com>
Add a ref_sorting_release() and use it for some of the current API users, the ref_sorting_default() function and its siblings will do a malloc() which wasn't being free'd previously.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- builtin/for-each-ref.c | 2 +- builtin/tag.c | 1 + ref-filter.c | 8 ++++++++ ref-filter.h | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 642b4b888fb..16a2c7d57ca 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -96,6 +96,6 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) ref_array_clear(&array); free_commit_list(filter.with_commit); free_commit_list(filter.no_commit); - UNLEAK(sorting); + ref_sorting_release(sorting); return 0; } diff --git a/builtin/tag.c b/builtin/tag.c index ad6c9855914..6fe646710d6 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -630,6 +630,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix) find_unique_abbrev(&prev, DEFAULT_ABBREV)); cleanup: + ref_sorting_release(sorting); strbuf_release(&buf); strbuf_release(&ref); strbuf_release(&reflog_msg); diff --git a/ref-filter.c b/ref-filter.c index add429be797..bdf8b0725df 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -2705,6 +2705,14 @@ int parse_opt_ref_sorting(const struct option *opt, const char *arg, int unset) return 0; } +void ref_sorting_release(struct ref_sorting *sorting) +{ + struct ref_sorting *next = sorting->next; + if (next) + ref_sorting_release(next); + free(sorting); +} + int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset) { struct ref_filter *rf = opt->value; diff --git a/ref-filter.h b/ref-filter.h index b636f4389d0..6228458d306 100644 --- a/ref-filter.h +++ b/ref-filter.h @@ -127,6 +127,8 @@ void parse_ref_sorting(struct ref_sorting **sorting_tail, const char *atom); int parse_opt_ref_sorting(const struct option *opt, const char *arg, int unset); /* Default sort option based on refname */ struct ref_sorting *ref_default_sorting(void); +/* Release a "struct ref_sorting" */ +void ref_sorting_release(struct ref_sorting *); /* Function to parse --merged and --no-merged options */ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset); /* Get the current HEAD's description */
-- 2.33.1.1338.g20da966911a