Commit 36b313296638f8ae349e400ba9a7f5bbfb92b96f

Vicent Marti 2011-03-16T01:04:17

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;
 }