sequencer: fix memory leak if `todo_list_rearrange_squash()` failed
In sequencer.c:todo_list_rearrange_squash, if it fails, memory allocated in `next`, `tail`, `subjects` and `subject2item` will leak. Jump to cleanup label before return could fix this leak problem. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
1a8a4971cc
commit
044511f889
|
|
@ -6596,6 +6596,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
|||
char **subjects;
|
||||
struct commit_todo_item commit_todo;
|
||||
struct todo_item *items = NULL;
|
||||
int ret = 0;
|
||||
|
||||
init_commit_todo_item(&commit_todo);
|
||||
/*
|
||||
|
|
@ -6626,8 +6627,8 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
|||
}
|
||||
|
||||
if (is_fixup(item->command)) {
|
||||
clear_commit_todo_item(&commit_todo);
|
||||
return error(_("the script was already rearranged."));
|
||||
ret = error(_("the script was already rearranged."));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
repo_parse_commit(the_repository, item->commit);
|
||||
|
|
@ -6729,6 +6730,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
|||
todo_list->items = items;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
free(next);
|
||||
free(tail);
|
||||
for (i = 0; i < todo_list->nr; i++)
|
||||
|
|
@ -6738,7 +6740,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
|
|||
|
||||
clear_commit_todo_item(&commit_todo);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int sequencer_determine_whence(struct repository *r, enum commit_whence *whence)
|
||||
|
|
|
|||
Loading…
Reference in New Issue