rebase: use "cleanup" pattern in do_interactive_rebase()
Use a "goto cleanup" pattern in do_interactive_rebase(). This
eliminates some duplicated free() code added in 53bbcfbde7
(rebase
-i: implement the main part of interactive rebase as a builtin,
2018-09-27), and sets us up for a subsequent commit which'll make
further use of the "cleanup" label.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a6a323b31e
commit
01fd5fb14b
@ -254,7 +254,7 @@ static int init_basic_state(struct replay_opts *opts, const char *head_name,
|
|||||||
|
|
||||||
static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
|
static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = -1;
|
||||||
char *revisions = NULL, *shortrevisions = NULL;
|
char *revisions = NULL, *shortrevisions = NULL;
|
||||||
struct strvec make_script_args = STRVEC_INIT;
|
struct strvec make_script_args = STRVEC_INIT;
|
||||||
struct todo_list todo_list = TODO_LIST_INIT;
|
struct todo_list todo_list = TODO_LIST_INIT;
|
||||||
@ -262,16 +262,12 @@ static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
|
|||||||
|
|
||||||
if (get_revision_ranges(opts->upstream, opts->onto, &opts->orig_head->object.oid,
|
if (get_revision_ranges(opts->upstream, opts->onto, &opts->orig_head->object.oid,
|
||||||
&revisions, &shortrevisions))
|
&revisions, &shortrevisions))
|
||||||
return -1;
|
goto cleanup;
|
||||||
|
|
||||||
if (init_basic_state(&replay,
|
if (init_basic_state(&replay,
|
||||||
opts->head_name ? opts->head_name : "detached HEAD",
|
opts->head_name ? opts->head_name : "detached HEAD",
|
||||||
opts->onto, &opts->orig_head->object.oid)) {
|
opts->onto, &opts->orig_head->object.oid))
|
||||||
free(revisions);
|
goto cleanup;
|
||||||
free(shortrevisions);
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!opts->upstream && opts->squash_onto)
|
if (!opts->upstream && opts->squash_onto)
|
||||||
write_file(path_squash_onto(), "%s\n",
|
write_file(path_squash_onto(), "%s\n",
|
||||||
@ -300,6 +296,7 @@ static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
|
|||||||
opts->autosquash, opts->update_refs, &todo_list);
|
opts->autosquash, opts->update_refs, &todo_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
free(revisions);
|
free(revisions);
|
||||||
free(shortrevisions);
|
free(shortrevisions);
|
||||||
todo_list_release(&todo_list);
|
todo_list_release(&todo_list);
|
||||||
|
Loading…
Reference in New Issue
Block a user