Commit cb77ad0d4e66262393c3fa868a7bc723cfd71d61

Vicent Marti 2011-02-18T12:23:53

Fix segfault when iterating a revlist backwards The `prev` and `next` pointers were not being updated after popping one of the list elements. Signed-off-by: Vicent Marti <tanoku@gmail.com>

diff --git a/src/revwalk.c b/src/revwalk.c
index 2237e33..e30e543 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -329,6 +329,8 @@ git_revwalk_commit *git_revwalk_list_pop_back(git_revwalk_list *list)
 	list->tail = list->tail->prev;
 	if (list->tail == NULL)
 		list->head = NULL;
+	else
+		list->tail->next = NULL;
 
 	commit = node->walk_commit;
 	free(node);
@@ -350,6 +352,8 @@ git_revwalk_commit *git_revwalk_list_pop_front(git_revwalk_list *list)
 	list->head = list->head->next;
 	if (list->head == NULL)
 		list->tail = NULL;
+	else
+		list->head->prev = NULL;
 
 	commit = node->walk_commit;
 	free(node);