]> git.proxmox.com Git - libgit2.git/commitdiff
Properly free commit a commit list in revwalk
authorVicent Marti <tanoku@gmail.com>
Tue, 15 Mar 2011 23:04:17 +0000 (01:04 +0200)
committerVicent Marti <tanoku@gmail.com>
Tue, 15 Mar 2011 23:04:17 +0000 (01:04 +0200)
The commit list was not being properly free'd when a walk was stopped
halfway through.

src/revwalk.c

index edafbe73d2cc5768750d1a5949243417a1e0d1b3..d17b440538f21440e0be5b22404ea8a08539ac68 100644 (file)
@@ -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;
 }