[PATCH 1/7] sequencer: fix leaked todo_list memory
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
sequencer.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/sequencer.c b/sequencer.c
index 3c384b9..762c527 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -900,6 +900,7 @@ static int continue_single_pick(void)
static int sequencer_continue(struct replay_opts *opts)
{
struct commit_list *todo_list = NULL;
+ int res;
if (!file_exists(git_path(SEQ_TODO_FILE)))
return continue_single_pick();
@@ -915,8 +916,11 @@ static int sequencer_continue(struct replay_opts *opts)
}
if (index_differs_from("HEAD", 0))
return error_dirty_index(opts);
- todo_list = todo_list->next;
- return pick_commits(todo_list, opts);
+ res = pick_commits(todo_list->next, opts);
+
+ free_commit_list(todo_list);
+
+ return res;
}
static int single_pick(struct commit *cmit, struct replay_opts *opts)
@@ -929,6 +933,7 @@ int sequencer_pick_revisions(struct replay_opts *opts)
{
struct commit_list *todo_list = NULL;
unsigned char sha1[20];
+ int res;
if (opts->subcommand == REPLAY_NONE)
assert(opts->revs);
@@ -985,5 +990,9 @@ int sequencer_pick_revisions(struct replay_opts *opts)
}
save_head(sha1_to_hex(sha1));
save_opts(opts);
- return pick_commits(todo_list, opts);
+ res = pick_commits(todo_list, opts);
+
+ free_commit_list(todo_list);
+
+ return res;
}
--
1.7.10.2.555.g6528037