If we are reversed, then we were correctly freeing both the list and the
contained data. However, we were leaking a list in the case of a
non-reversed traversal.

Signed-off-by: Dan McGee <[email protected]>
---
 src/util/pactree.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/pactree.c b/src/util/pactree.c
index 0c1710f..9125f58 100644
--- a/src/util/pactree.c
+++ b/src/util/pactree.c
@@ -472,7 +472,7 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, 
tdepth *depth, int r
                                depth->next = &d;
                                /* last dep, cut off the limb here */
                                if(last){
-                                       if(depth->prev){
+                                       if(depth->prev) {
                                                depth->prev->next = &d;
                                                d.prev = depth->prev;
                                                depth = &d;
@@ -488,6 +488,8 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, 
tdepth *depth, int r
 
        if(rev) {
                FREELIST(deps);
+       } else {
+               alpm_list_free(deps);
        }
 }
 
-- 
1.8.0.2


Reply via email to