[RFC PATCH v2 2/4] ref-filter API user: add and use a ref_sorting_release()
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-10-20 13:24:49
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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