From: Christian Couder Date: Mon, 21 May 2012 14:56:03 GMT Subject: [PATCH 1/7] sequencer: fix leaked todo_list memory Message-ID: <20120521145610.1911.87598.chriscool@tuxfamily.org> In-Reply-To: <20120521143309.1911.94302.chriscool@tuxfamily.org> Signed-off-by: Christian Couder --- 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