Fix comparisong bug in razor_set_diff().
authorKristian Høgsberg <krh@redhat.com>
Tue, 22 Jan 2008 16:34:28 +0000 (11:34 -0500)
committerKristian Høgsberg <krh@redhat.com>
Tue, 22 Jan 2008 16:34:28 +0000 (11:34 -0500)
We could end up calling the callback for p1 even if it's NULL, if p2 != NULL
and the previous comparison left res == -1.

razor.c

diff --git a/razor.c b/razor.c
index ddb16fc..b5f0d10 100644 (file)
--- a/razor.c
+++ b/razor.c
@@ -1797,7 +1797,7 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream,
        struct razor_package_iterator *pi1, *pi2;
        struct razor_package *p1, *p2;
        const char *name1, *name2, *version1, *version2;
-       int res = 0;
+       int res;
 
        pi1 = razor_package_iterator_create(set);
        pi2 = razor_package_iterator_create(upstream);
@@ -1810,6 +1810,8 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream,
                        res = strcmp(name1, name2);
                        if (res == 0)
                                res = versioncmp(version1, version2);
+               } else {
+                       res = 0;
                }
 
                if (p2 == NULL || res < 0)