revisions API users: add straightforward release_revisions()

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>

Ævar Arnfjörð Bjarmason committed Apr 13, 2022 at 22:01 UTC 2108fe4a1976f95821e13503fd331f075da398c6
28 files changed +39
add-interactive.c
+1
@@ -570,6 +570,7 @@ static int get_modified_files(struct repository *r,
570
571 if (ps)
572 clear_pathspec(&rev.prune_data);
573 + release_revisions(&rev);
574 }
575 hashmap_clear_and_free(&s.file_map, struct pathname_entry, ent);
576 if (unmerged_count)
bisect.c
+2
@@ -884,6 +884,7 @@ static int check_ancestors(struct repository *r, int rev_nr,
884 /* Clean up objects used, as they will be reused. */
885 clear_commit_marks_many(rev_nr, rev, ALL_REV_FLAGS);
886
887 + release_revisions(&revs);
888 return res;
889 }
890
@@ -964,6 +965,7 @@ static void show_diff_tree(struct repository *r,
965
966 setup_revisions(ARRAY_SIZE(argv) - 1, argv, &opt, NULL);
967 log_tree_commit(&opt, commit);
968 + release_revisions(&opt);
969 }
970
971 /*
builtin/add.c
+1
@@ -340,6 +340,7 @@ static int edit_patch(int argc, const char **argv, const char *prefix)
340
341 unlink(file);
342 free(file);
343 + release_revisions(&rev);
344 return 0;
345 }
346
builtin/am.c
+3
@@ -1397,6 +1397,7 @@ static void write_commit_patch(const struct am_state *state, struct commit *comm
1397 add_pending_object(&rev_info, &commit->object, "");
1398 diff_setup_done(&rev_info.diffopt);
1399 log_tree_commit(&rev_info, commit);
1400 + release_revisions(&rev_info);
1401 }
1402
1403 /**
@@ -1429,6 +1430,7 @@ static void write_index_patch(const struct am_state *state)
1430 add_pending_object(&rev_info, &tree->object, "");
1431 diff_setup_done(&rev_info.diffopt);
1432 run_diff_index(&rev_info, 1);
1433 + release_revisions(&rev_info);
1434 }
1435
1436 /**
@@ -1582,6 +1584,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pa
1584 add_pending_oid(&rev_info, "HEAD", &our_tree, 0);
1585 diff_setup_done(&rev_info.diffopt);
1586 run_diff_index(&rev_info, 1);
1587 + release_revisions(&rev_info);
1588 }
1589
1590 if (run_apply(state, index_path))
builtin/bisect--helper.c
+2
@@ -555,6 +555,7 @@ static int bisect_skipped_commits(struct bisect_terms *terms)
555 reset_revision_walk();
556
557 strbuf_release(&commit_name);
558 + release_revisions(&revs);
559 fclose(fp);
560 return 0;
561 }
@@ -1041,6 +1042,7 @@ static enum bisect_error bisect_skip(struct bisect_terms *terms, const char **ar
1042 oid_to_hex(&commit->object.oid));
1043
1044 reset_revision_walk();
1045 + release_revisions(&revs);
1046 } else {
1047 strvec_push(&argv_state, argv[i]);
1048 }
builtin/blame.c
+1
@@ -1203,5 +1203,6 @@ parse_done:
1203
1204 cleanup:
1205 cleanup_scoreboard(&sb);
1206 + release_revisions(&revs);
1207 return 0;
1208 }
builtin/checkout.c
+1
@@ -1082,6 +1082,7 @@ static void orphaned_commit_warning(struct commit *old_commit, struct commit *ne
1082
1083 /* Clean up objects used, as they will be reused. */
1084 repo_clear_commit_marks(the_repository, ALL_REV_FLAGS);
1085 + release_revisions(&revs);
1086 }
1087
1088 static int switch_branches(const struct checkout_opts *opts,
builtin/commit.c
+1
@@ -1123,6 +1123,7 @@ static const char *find_author_by_nickname(const char *name)
1123 strbuf_release(&buf);
1124 format_commit_message(commit, "%aN <%aE>", &buf, &ctx);
1125 clear_mailmap(&mailmap);
1126 + release_revisions(&revs);
1127 return strbuf_detach(&buf, NULL);
1128 }
1129 die(_("--author '%s' is not 'Name <email>' and matches no existing author"), name);
builtin/describe.c
+2
@@ -517,6 +517,7 @@ static void describe_blob(struct object_id oid, struct strbuf *dst)
517
518 traverse_commit_list(&revs, process_commit, process_object, &pcd);
519 reset_revision_walk();
520 + release_revisions(&revs);
521 }
522
523 static void describe(const char *arg, int last_one)
@@ -667,6 +668,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
668 suffix = NULL;
669 else
670 suffix = dirty;
671 + release_revisions(&revs);
672 }
673 describe("HEAD", 1);
674 } else if (dirty) {
builtin/fast-export.c
+1
@@ -1275,6 +1275,7 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
1275 printf("done\n");
1276
1277 refspec_clear(&refspecs);
1278 + release_revisions(&revs);
1279
1280 return 0;
1281 }
builtin/merge.c
+2
@@ -443,6 +443,7 @@ static void squash_message(struct commit *commit, struct commit_list *remotehead
443 }
444 write_file_buf(git_path_squash_msg(the_repository), out.buf, out.len);
445 strbuf_release(&out);
446 + release_revisions(&rev);
447 }
448
449 static void finish(struct commit *head_commit,
@@ -998,6 +999,7 @@ static int evaluate_result(void)
999 */
1000 cnt += count_unmerged_entries();
1001
1002 + release_revisions(&rev);
1003 return cnt;
1004 }
1005
builtin/pack-objects.c
+2
@@ -4167,11 +4167,13 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
4167 read_object_list_from_stdin();
4168 } else if (pfd.have_revs) {
4169 get_object_list(&pfd.revs, rp.nr, rp.v);
4170 + release_revisions(&pfd.revs);
4171 } else {
4172 struct rev_info revs;
4173
4174 repo_init_revisions(the_repository, &revs, NULL);
4175 get_object_list(&revs, rp.nr, rp.v);
4176 + release_revisions(&revs);
4177 }
4178 cleanup_preferred_base();
4179 if (include_tag && nr_result)
builtin/prune.c
+1
@@ -196,5 +196,6 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
196 prune_shallow(show_only ? PRUNE_SHOW_ONLY : 0);
197 }
198
199 + release_revisions(&revs);
200 return 0;
201 }
builtin/reflog.c
+1
@@ -248,6 +248,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
248 if (verbose)
249 printf(_("Marking reachable objects..."));
250 mark_reachable_objects(&revs, 0, 0, NULL);
251 + release_revisions(&revs);
252 if (verbose)
253 putchar('\n');
254 }
builtin/shortlog.c
+2
@@ -422,6 +422,8 @@ parse_done:
422 else
423 get_from_rev(&rev, &log);
424
425 + release_revisions(&rev);
426 +
427 shortlog_output(&log);
428 if (log.file != stdout)
429 fclose(log.file);
builtin/submodule--helper.c
+1
@@ -1269,6 +1269,7 @@ static int compute_summary_module_list(struct object_id *head_oid,
1269 run_diff_files(&rev, 0);
1270 prepare_submodule_summary(info, &list);
1271 strvec_clear(&diff_args);
1272 + release_revisions(&rev);
1273 return 0;
1274 }
1275
fmt-merge-msg.c
+1
@@ -699,6 +699,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
699 shortlog(origins.items[i].string,
700 origins.items[i].util,
701 head, &rev, opts, out);
702 + release_revisions(&rev);
703 }
704
705 strbuf_complete_line(out);
merge-ort.c
+1
@@ -1594,6 +1594,7 @@ static int find_first_merges(struct repository *repo,
1594 }
1595
1596 object_array_clear(&merges);
1597 + release_revisions(&revs);
1598 return result->nr;
1599 }
1600
merge-recursive.c
+1
@@ -1160,6 +1160,7 @@ static int find_first_merges(struct repository *repo,
1160 }
1161
1162 object_array_clear(&merges);
1163 + release_revisions(&revs);
1164 return result->nr;
1165 }
1166
midx.c
+1
@@ -1061,6 +1061,7 @@ static struct commit **find_commits_for_midx_bitmap(uint32_t *indexed_commits_nr
1061 if (indexed_commits_nr_p)
1062 *indexed_commits_nr_p = cb.commits_nr;
1063
1064 + release_revisions(&revs);
1065 return cb.commits;
1066 }
1067
pack-bitmap-write.c
+1
@@ -326,6 +326,7 @@ next:
326 trace2_data_intmax("pack-bitmap-write", the_repository,
327 "num_maximal_commits", num_maximal);
328
329 + release_revisions(&revs);
330 free_commit_list(reusable);
331 }
332
ref-filter.c
+1
@@ -2392,6 +2392,7 @@ static void reach_filter(struct ref_array *array,
2392 clear_commit_marks(merge_commit, ALL_REV_FLAGS);
2393 }
2394
2395 + release_revisions(&revs);
2396 free(to_clear);
2397 }
2398
remote.c
+1
@@ -2172,6 +2172,7 @@ static int stat_branch_pair(const char *branch_name, const char *base,
2172 clear_commit_marks(theirs, ALL_REV_FLAGS);
2173
2174 strvec_clear(&argv);
2175 + release_revisions(&revs);
2176 return 1;
2177 }
2178
sequencer.c
+3
@@ -1347,6 +1347,7 @@ void print_commit_summary(struct repository *r,
1347 log_tree_commit(&rev, commit);
1348 }
1349
1350 + release_revisions(&rev);
1351 strbuf_release(&format);
1352 }
1353
@@ -3415,6 +3416,7 @@ static int make_patch(struct repository *r,
3416 unuse_commit_buffer(commit, commit_buffer);
3417 }
3418 strbuf_release(&buf);
3419 + release_revisions(&log_tree_opt);
3420
3421 return res;
3422 }
@@ -4525,6 +4527,7 @@ cleanup_head_ref:
4527 &log_tree_opt.diffopt);
4528 log_tree_diff_flush(&log_tree_opt);
4529 }
4530 + release_revisions(&log_tree_opt);
4531 }
4532 flush_rewritten_pending();
4533 if (!stat(rebase_path_rewritten_list(), &st) &&
shallow.c
+1
@@ -261,6 +261,7 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,
261 if ((o->flags & both_flags) == both_flags)
262 o->flags &= ~not_shallow_flag;
263 }
264 + release_revisions(&revs);
265 return result;
266 }
267
submodule.c
+2
@@ -900,9 +900,11 @@ static void collect_changed_submodules(struct repository *r,
900 diff_rev.diffopt.format_callback_data = &data;
901 diff_rev.dense_combined_merges = 1;
902 diff_tree_combined_merge(commit, &diff_rev);
903 + release_revisions(&diff_rev);
904 }
905
906 reset_revision_walk();
907 + release_revisions(&rev);
908 }
909
910 static void free_submodules_oids(struct string_list *submodules)
t/helper/test-revision-walking.c
+1
@@ -43,6 +43,7 @@ static int run_revision_walk(void)
43 }
44
45 reset_revision_walk();
46 + release_revisions(&rev);
47 return got_revision;
48 }
49
wt-status.c
+1
@@ -1152,6 +1152,7 @@ static void wt_longstatus_print_verbose(struct wt_status *s)
1152 rev.diffopt.b_prefix = "w/";
1153 run_diff_files(&rev, 0);
1154 }
1155 + release_revisions(&rev);
1156 }
1157
1158 static void wt_longstatus_print_tracking(struct wt_status *s)