revisions API users: add "goto cleanup" for release_revisions()

Add a release_revisions() to various users of "struct rev_info" which
requires a minor refactoring to a "goto cleanup" pattern to use that
function.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ævar Arnfjörð Bjarmason
2022-04-13 22:01:40 +02:00
committed by Junio C Hamano
parent 5e480176fe
commit 0139c58ab9
6 changed files with 55 additions and 24 deletions

View File

@ -77,8 +77,12 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
perror("read_cache_preload");
return -1;
result = -1;
goto cleanup;
}
cleanup:
result = run_diff_files(&rev, options);
return diff_result_code(&rev.diffopt, result);
result = diff_result_code(&rev.diffopt, result);
release_revisions(&rev);
return result;
}

View File

@ -500,6 +500,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
int use_bitmap_index = 0;
int filter_provided_objects = 0;
const char *show_progress = NULL;
int ret = 0;
if (argc == 2 && !strcmp(argv[1], "-h"))
usage(rev_list_usage);
@ -583,7 +584,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
}
if (!strcmp(arg, "--test-bitmap")) {
test_bitmap_walk(&revs);
return 0;
goto cleanup;
}
if (skip_prefix(arg, "--progress=", &arg)) {
show_progress = arg;
@ -672,11 +673,11 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
if (use_bitmap_index) {
if (!try_bitmap_count(&revs, filter_provided_objects))
return 0;
goto cleanup;
if (!try_bitmap_disk_usage(&revs, filter_provided_objects))
return 0;
goto cleanup;
if (!try_bitmap_traversal(&revs, filter_provided_objects))
return 0;
goto cleanup;
}
if (prepare_revision_walk(&revs))
@ -696,8 +697,10 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
find_bisection(&revs.commits, &reaches, &all, bisect_flags);
if (bisect_show_vars)
return show_bisect_vars(&info, reaches, all);
if (bisect_show_vars) {
ret = show_bisect_vars(&info, reaches, all);
goto cleanup;
}
}
if (filter_provided_objects) {
@ -752,5 +755,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
if (show_disk_usage)
printf("%"PRIuMAX"\n", (uintmax_t)total_disk_usage);
return 0;
cleanup:
release_revisions(&revs);
return ret;
}

View File

@ -917,6 +917,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
cleanup:
strvec_clear(&stash_args);
free_stash_info(&info);
release_revisions(&rev);
if (do_usage)
usage_with_options(git_stash_show_usage, options);
return ret;

View File

@ -1232,6 +1232,7 @@ static int compute_summary_module_list(struct object_id *head_oid,
struct strvec diff_args = STRVEC_INIT;
struct rev_info rev;
struct module_cb_list list = MODULE_CB_LIST_INIT;
int ret = 0;
strvec_push(&diff_args, get_diff_cmd(diff_cmd));
if (info->cached)
@ -1257,11 +1258,13 @@ static int compute_summary_module_list(struct object_id *head_oid,
setup_work_tree();
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
perror("read_cache_preload");
return -1;
ret = -1;
goto cleanup;
}
} else if (read_cache() < 0) {
perror("read_cache");
return -1;
ret = -1;
goto cleanup;
}
if (diff_cmd == DIFF_INDEX)
@ -1269,9 +1272,10 @@ static int compute_summary_module_list(struct object_id *head_oid,
else
run_diff_files(&rev, 0);
prepare_submodule_summary(info, &list);
cleanup:
strvec_clear(&diff_args);
release_revisions(&rev);
return 0;
return ret;
}
static int module_summary(int argc, const char **argv, const char *prefix)