]> git.ipfire.org Git - thirdparty/git.git/commitdiff
revisions API users: add straightforward release_revisions()
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 13 Apr 2022 20:01:36 +0000 (22:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Apr 2022 06:56:08 +0000 (23:56 -0700)
Add a release_revisions() to various users of "struct rev_list" in
those straightforward cases where we only need to add the
release_revisions() call to the end of a block, and don't need to
e.g. refactor anything to use a "goto cleanup" pattern.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
28 files changed:
add-interactive.c
bisect.c
builtin/add.c
builtin/am.c
builtin/bisect--helper.c
builtin/blame.c
builtin/checkout.c
builtin/commit.c
builtin/describe.c
builtin/fast-export.c
builtin/merge.c
builtin/pack-objects.c
builtin/prune.c
builtin/reflog.c
builtin/shortlog.c
builtin/submodule--helper.c
fmt-merge-msg.c
merge-ort.c
merge-recursive.c
midx.c
pack-bitmap-write.c
ref-filter.c
remote.c
sequencer.c
shallow.c
submodule.c
t/helper/test-revision-walking.c
wt-status.c

index 72472103017920ac227641042f05383a40e5c673..54cdfc8201738fdac1fc18c048559a9bcb3fe5a9 100644 (file)
@@ -570,6 +570,7 @@ static int get_modified_files(struct repository *r,
 
                if (ps)
                        clear_pathspec(&rev.prune_data);
+               release_revisions(&rev);
        }
        hashmap_clear_and_free(&s.file_map, struct pathname_entry, ent);
        if (unmerged_count)
index 9e6a2b7f201a604f40d074c13be6d0c892cdf46d..cc6b8b6230d36e154a95a4b74de48e81b0260762 100644 (file)
--- a/bisect.c
+++ b/bisect.c
@@ -884,6 +884,7 @@ static int check_ancestors(struct repository *r, int rev_nr,
        /* Clean up objects used, as they will be reused. */
        clear_commit_marks_many(rev_nr, rev, ALL_REV_FLAGS);
 
+       release_revisions(&revs);
        return res;
 }
 
@@ -964,6 +965,7 @@ static void show_diff_tree(struct repository *r,
 
        setup_revisions(ARRAY_SIZE(argv) - 1, argv, &opt, NULL);
        log_tree_commit(&opt, commit);
+       release_revisions(&opt);
 }
 
 /*
index 3ffb86a43384f21cad4fdcc0d8549e37dba12227..f507d2191cd43507a5d360a7b5fbf84f71d64976 100644 (file)
@@ -340,6 +340,7 @@ static int edit_patch(int argc, const char **argv, const char *prefix)
 
        unlink(file);
        free(file);
+       release_revisions(&rev);
        return 0;
 }
 
index 0f4111bafa0b0887ae29903509a0af7447ab13ff..93bec62afa993cb236ce09c13b38932ee396f250 100644 (file)
@@ -1397,6 +1397,7 @@ static void write_commit_patch(const struct am_state *state, struct commit *comm
        add_pending_object(&rev_info, &commit->object, "");
        diff_setup_done(&rev_info.diffopt);
        log_tree_commit(&rev_info, commit);
+       release_revisions(&rev_info);
 }
 
 /**
@@ -1429,6 +1430,7 @@ static void write_index_patch(const struct am_state *state)
        add_pending_object(&rev_info, &tree->object, "");
        diff_setup_done(&rev_info.diffopt);
        run_diff_index(&rev_info, 1);
+       release_revisions(&rev_info);
 }
 
 /**
@@ -1582,6 +1584,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
                add_pending_oid(&rev_info, "HEAD", &our_tree, 0);
                diff_setup_done(&rev_info.diffopt);
                run_diff_index(&rev_info, 1);
+               release_revisions(&rev_info);
        }
 
        if (run_apply(state, index_path))
index 8b2b259ff0d11ebf6d28765b2a926a5efb1b644e..e4d7b6779ae182c6ff29479576b32a10e9d59dc1 100644 (file)
@@ -555,6 +555,7 @@ static int bisect_skipped_commits(struct bisect_terms *terms)
        reset_revision_walk();
 
        strbuf_release(&commit_name);
+       release_revisions(&revs);
        fclose(fp);
        return 0;
 }
@@ -1041,6 +1042,7 @@ static enum bisect_error bisect_skip(struct bisect_terms *terms, const char **ar
                                                oid_to_hex(&commit->object.oid));
 
                        reset_revision_walk();
+                       release_revisions(&revs);
                } else {
                        strvec_push(&argv_state, argv[i]);
                }
index 885b381ab83a9c6dee19753481a1aa6ffad41d28..24bac822c5603dec9590c79e0a11dfb4aecd94b3 100644 (file)
@@ -1203,5 +1203,6 @@ parse_done:
 
 cleanup:
        cleanup_scoreboard(&sb);
+       release_revisions(&revs);
        return 0;
 }
index 4d9e0bd3ac13ab224e173daed9e00130cf4c82fb..7ad4a7113c9cd40b4033daef79dbe981ef0b55aa 100644 (file)
@@ -1082,6 +1082,7 @@ static void orphaned_commit_warning(struct commit *old_commit, struct commit *ne
 
        /* Clean up objects used, as they will be reused. */
        repo_clear_commit_marks(the_repository, ALL_REV_FLAGS);
+       release_revisions(&revs);
 }
 
 static int switch_branches(const struct checkout_opts *opts,
index 009a1de0a3d3f69e05a802d7d2356935018b0f81..c7eda9bbb720afa9b8fba6b20c233612e51b115c 100644 (file)
@@ -1123,6 +1123,7 @@ static const char *find_author_by_nickname(const char *name)
                strbuf_release(&buf);
                format_commit_message(commit, "%aN <%aE>", &buf, &ctx);
                clear_mailmap(&mailmap);
+               release_revisions(&revs);
                return strbuf_detach(&buf, NULL);
        }
        die(_("--author '%s' is not 'Name <email>' and matches no existing author"), name);
index 42159cd26bd80797ab082d4d2509cf17ec8fc113..a76f1a1a7a7004cc95f392024cc1a27d54c870df 100644 (file)
@@ -517,6 +517,7 @@ static void describe_blob(struct object_id oid, struct strbuf *dst)
 
        traverse_commit_list(&revs, process_commit, process_object, &pcd);
        reset_revision_walk();
+       release_revisions(&revs);
 }
 
 static void describe(const char *arg, int last_one)
@@ -667,6 +668,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
                                suffix = NULL;
                        else
                                suffix = dirty;
+                       release_revisions(&revs);
                }
                describe("HEAD", 1);
        } else if (dirty) {
index a7d72697fbac1a521a86dfc63e02f8ba113bb68e..f34ae451ee33e94bc1dd330df111aaf49ebcd195 100644 (file)
@@ -1275,6 +1275,7 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
                printf("done\n");
 
        refspec_clear(&refspecs);
+       release_revisions(&revs);
 
        return 0;
 }
index f178f5a3ee18c71d2acda9455b020f9c03da9509..d9784d4891c92bbc27f7e0ecdcf1d17b7bcded5b 100644 (file)
@@ -443,6 +443,7 @@ static void squash_message(struct commit *commit, struct commit_list *remotehead
        }
        write_file_buf(git_path_squash_msg(the_repository), out.buf, out.len);
        strbuf_release(&out);
+       release_revisions(&rev);
 }
 
 static void finish(struct commit *head_commit,
@@ -998,6 +999,7 @@ static int evaluate_result(void)
         */
        cnt += count_unmerged_entries();
 
+       release_revisions(&rev);
        return cnt;
 }
 
index 09680fb6a8b2d138c8ee84bf68a9c197f951470a..5c3f31764965ee10936c1a80263cc318c6500e8d 100644 (file)
@@ -4167,11 +4167,13 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
                read_object_list_from_stdin();
        } else if (pfd.have_revs) {
                get_object_list(&pfd.revs, rp.nr, rp.v);
+               release_revisions(&pfd.revs);
        } else {
                struct rev_info revs;
 
                repo_init_revisions(the_repository, &revs, NULL);
                get_object_list(&revs, rp.nr, rp.v);
+               release_revisions(&revs);
        }
        cleanup_preferred_base();
        if (include_tag && nr_result)
index c2bcdc07db46a76559ecbccda756642f7cd5b6b4..df376b2ed1e0920e727e5e0a373fbb053ddf3d5a 100644 (file)
@@ -196,5 +196,6 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
                prune_shallow(show_only ? PRUNE_SHOW_ONLY : 0);
        }
 
+       release_revisions(&revs);
        return 0;
 }
index 9407f835cb6fe5c1d921b312a441eff84db961bf..592d5d334424d3e828798710f51b8ca39b52ebcc 100644 (file)
@@ -248,6 +248,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
                if (verbose)
                        printf(_("Marking reachable objects..."));
                mark_reachable_objects(&revs, 0, 0, NULL);
+               release_revisions(&revs);
                if (verbose)
                        putchar('\n');
        }
index fcde07c9367326cf6037260a3327840e22a6015b..35825f075e3b219bb36bbffe6907f37b5140907a 100644 (file)
@@ -422,6 +422,8 @@ parse_done:
        else
                get_from_rev(&rev, &log);
 
+       release_revisions(&rev);
+
        shortlog_output(&log);
        if (log.file != stdout)
                fclose(log.file);
index 5301612d24b0b122717b197bda6e2a455e51e923..24980863f68d902285a14e7b144689ac16ed3728 100644 (file)
@@ -1269,6 +1269,7 @@ static int compute_summary_module_list(struct object_id *head_oid,
                run_diff_files(&rev, 0);
        prepare_submodule_summary(info, &list);
        strvec_clear(&diff_args);
+       release_revisions(&rev);
        return 0;
 }
 
index baca57d5b64c9f30bad08a505ccd7f1a9ba38546..f48f44f9cd1dbdd3aeafbe5a4bd3598e783d0e25 100644 (file)
@@ -699,6 +699,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
                        shortlog(origins.items[i].string,
                                 origins.items[i].util,
                                 head, &rev, opts, out);
+               release_revisions(&rev);
        }
 
        strbuf_complete_line(out);
index 8545354dafd0600e02eb1bb509d8f9bedd23d1c9..4c0d4eba19b2538067d3dac8244071477a338081 100644 (file)
@@ -1594,6 +1594,7 @@ static int find_first_merges(struct repository *repo,
        }
 
        object_array_clear(&merges);
+       release_revisions(&revs);
        return result->nr;
 }
 
index 32bbba5fbb18fb7a5b3b844db0b94ec00ae81d16..acd13b2b069c35be7f7f9a805327e8a8d2daa2e8 100644 (file)
@@ -1160,6 +1160,7 @@ static int find_first_merges(struct repository *repo,
        }
 
        object_array_clear(&merges);
+       release_revisions(&revs);
        return result->nr;
 }
 
diff --git a/midx.c b/midx.c
index 865170bad05a04f15d051fc871529022467dc6f8..702c8a9b1780dfe388388cd3006df4f2e414ab12 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -1061,6 +1061,7 @@ static struct commit **find_commits_for_midx_bitmap(uint32_t *indexed_commits_nr
        if (indexed_commits_nr_p)
                *indexed_commits_nr_p = cb.commits_nr;
 
+       release_revisions(&revs);
        return cb.commits;
 }
 
index cab3eaa2acd141d306eeb820e6278561555a33cd..ea8e0b51cdf4897f48081034d5b3867316d8114c 100644 (file)
@@ -326,6 +326,7 @@ next:
        trace2_data_intmax("pack-bitmap-write", the_repository,
                           "num_maximal_commits", num_maximal);
 
+       release_revisions(&revs);
        free_commit_list(reusable);
 }
 
index 7838bd22b8db1bd52859361a4f3b7789c2cf4b5b..a91688bbf17b7fd0548eab2971cdab779554a719 100644 (file)
@@ -2392,6 +2392,7 @@ static void reach_filter(struct ref_array *array,
                clear_commit_marks(merge_commit, ALL_REV_FLAGS);
        }
 
+       release_revisions(&revs);
        free(to_clear);
 }
 
index 42a4e7106e1255af5b79d32ff7d86170827582b1..fa3152a5d52f29fd306fc48a6b8e7ce25b560586 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -2172,6 +2172,7 @@ static int stat_branch_pair(const char *branch_name, const char *base,
        clear_commit_marks(theirs, ALL_REV_FLAGS);
 
        strvec_clear(&argv);
+       release_revisions(&revs);
        return 1;
 }
 
index a1bb39383db9ff3319c66faa357463e0c32c3257..f9d7acd10655fc9397da671dba50480b569018ad 100644 (file)
@@ -1347,6 +1347,7 @@ void print_commit_summary(struct repository *r,
                log_tree_commit(&rev, commit);
        }
 
+       release_revisions(&rev);
        strbuf_release(&format);
 }
 
@@ -3415,6 +3416,7 @@ static int make_patch(struct repository *r,
                unuse_commit_buffer(commit, commit_buffer);
        }
        strbuf_release(&buf);
+       release_revisions(&log_tree_opt);
 
        return res;
 }
@@ -4525,6 +4527,7 @@ cleanup_head_ref:
                                              &log_tree_opt.diffopt);
                                log_tree_diff_flush(&log_tree_opt);
                        }
+                       release_revisions(&log_tree_opt);
                }
                flush_rewritten_pending();
                if (!stat(rebase_path_rewritten_list(), &st) &&
index 71e5876f3776e924150cf308928262e2ff0cc16e..2552f139f6171a3b0de4135567428efde98d15d7 100644 (file)
--- a/shallow.c
+++ b/shallow.c
@@ -261,6 +261,7 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,
                if ((o->flags & both_flags) == both_flags)
                        o->flags &= ~not_shallow_flag;
        }
+       release_revisions(&revs);
        return result;
 }
 
index 7797e5a4dbb051ca37467a33e670621fdc81dd9d..86ebd3f35c5f9162c3ff4a946c88f62051a0a012 100644 (file)
@@ -900,9 +900,11 @@ static void collect_changed_submodules(struct repository *r,
                diff_rev.diffopt.format_callback_data = &data;
                diff_rev.dense_combined_merges = 1;
                diff_tree_combined_merge(commit, &diff_rev);
+               release_revisions(&diff_rev);
        }
 
        reset_revision_walk();
+       release_revisions(&rev);
 }
 
 static void free_submodules_oids(struct string_list *submodules)
index 625b2dbf8226fee261c52b3cf74f24187e0ca68e..4a45d5bac2af5678eda5ad8b49c7747a3973878e 100644 (file)
@@ -43,6 +43,7 @@ static int run_revision_walk(void)
        }
 
        reset_revision_walk();
+       release_revisions(&rev);
        return got_revision;
 }
 
index 922cf787f95adafa3c5d43be51c8b2fb89833548..f91006213755182c55d9def94e93a85ad47793a6 100644 (file)
@@ -1152,6 +1152,7 @@ static void wt_longstatus_print_verbose(struct wt_status *s)
                rev.diffopt.b_prefix = "w/";
                run_diff_files(&rev, 0);
        }
+       release_revisions(&rev);
 }
 
 static void wt_longstatus_print_tracking(struct wt_status *s)