From cb77ad0d4e66262393c3fa868a7bc723cfd71d61 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Fri, 18 Feb 2011 12:23:53 +0200 Subject: [PATCH] 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 --- src/revwalk.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/revwalk.c b/src/revwalk.c index 2237e333d..e30e543a8 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);