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