Merge branch 'ly/sequencer-rearrange-leakfix'

Leakfix.

* ly/sequencer-rearrange-leakfix:
  sequencer: fix memory leak if `todo_list_rearrange_squash()` failed
maint
Junio C Hamano 2025-05-27 13:59:07 -07:00
commit 6261489cdb
1 changed files with 5 additions and 3 deletions

View File

@ -6594,6 +6594,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
char **subjects; char **subjects;
struct commit_todo_item commit_todo; struct commit_todo_item commit_todo;
struct todo_item *items = NULL; struct todo_item *items = NULL;
int ret = 0;


init_commit_todo_item(&commit_todo); init_commit_todo_item(&commit_todo);
/* /*
@ -6624,8 +6625,8 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
} }


if (is_fixup(item->command)) { if (is_fixup(item->command)) {
clear_commit_todo_item(&commit_todo); ret = error(_("the script was already rearranged."));
return error(_("the script was already rearranged.")); goto cleanup;
} }


repo_parse_commit(the_repository, item->commit); repo_parse_commit(the_repository, item->commit);
@ -6727,6 +6728,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
todo_list->items = items; todo_list->items = items;
} }


cleanup:
free(next); free(next);
free(tail); free(tail);
for (i = 0; i < todo_list->nr; i++) for (i = 0; i < todo_list->nr; i++)
@ -6736,7 +6738,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)


clear_commit_todo_item(&commit_todo); clear_commit_todo_item(&commit_todo);


return 0; return ret;
} }


int sequencer_determine_whence(struct repository *r, enum commit_whence *whence) int sequencer_determine_whence(struct repository *r, enum commit_whence *whence)