Properly free commit a commit list in revwalk The commit list was not being properly free'd when a walk was stopped halfway through.
diff --git a/src/revwalk.c b/src/revwalk.c
index edafbe7..d17b440 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -78,13 +78,17 @@ commit_list *commit_list_insert(commit_object *item, commit_list **list_p)
return new_list;
}
-void commit_list_free(commit_list *list)
+void commit_list_free(commit_list **list_p)
{
+ commit_list *list = *list_p;
+
while (list) {
commit_list *temp = list;
list = temp->next;
free(temp);
}
+
+ *list_p = NULL;
}
commit_object *commit_list_pop(commit_list **stack)
@@ -561,9 +565,9 @@ void git_revwalk_reset(git_revwalk *walk)
);
git_pqueue_free(&walk->iterator_time);
- commit_list_free(walk->iterator_topo);
- commit_list_free(walk->iterator_rand);
- commit_list_free(walk->iterator_reverse);
+ commit_list_free(&walk->iterator_topo);
+ commit_list_free(&walk->iterator_rand);
+ commit_list_free(&walk->iterator_reverse);
walk->walking = 0;
}