diff --git a/builtin-log.c b/builtin-log.c index f4d974a7b8bfa0472a110273edf62b34b90902fe..6afa66ce02bee9a0de4403e1bfb0eedb70c087df 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -40,6 +40,8 @@ static int cmd_log_wc(int argc, const char **argv, char **envp, log_tree_commit(rev, commit); free(commit->buffer); commit->buffer = NULL; + free_commit_list(commit->parents); + commit->parents = NULL; } return 0; } diff --git a/builtin-rev-list.c b/builtin-rev-list.c index 2b298c4e412c4fca24ea5068f17a557f89a6a449..71353eb19db158a60a5ae94f83f53059adc3399b 100644 --- a/builtin-rev-list.c +++ b/builtin-rev-list.c @@ -89,6 +89,14 @@ static void show_commit(struct commit *commit) printf("%s%c", pretty_header, hdr_termination); } fflush(stdout); + if (commit->parents) { + free_commit_list(commit->parents); + commit->parents = NULL; + } + if (commit->buffer) { + free(commit->buffer); + commit->buffer = NULL; + } } static struct object_list **process_blob(struct blob *blob, diff --git a/revision.c b/revision.c index 82214eb71a96e75089dbe583eb4e2d06eb608550..7bff2a10b1044651a776b42d4ee3d91661830aa2 100644 --- a/revision.c +++ b/revision.c @@ -949,9 +949,11 @@ struct commit *get_revision(struct rev_info *revs) } do { - struct commit *commit = revs->commits->item; + struct commit_list *entry = revs->commits; + struct commit *commit = entry->item; - revs->commits = revs->commits->next; + revs->commits = entry->next; + free(entry); /* * If we haven't done the list limiting, we need to look at