[SATYR PATCH 1/2] rpm: fix regression in sr_rpm_package_uniq

Martin Milata mmilata at redhat.com
Mon Jun 3 10:45:44 UTC 2013


Signed-off-by: Martin Milata <mmilata at redhat.com>
---
 lib/rpm.c    |  8 +++++---
 tests/rpm.at | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/lib/rpm.c b/lib/rpm.c
index df027ff..eb18b61 100644
--- a/lib/rpm.c
+++ b/lib/rpm.c
@@ -260,9 +260,11 @@ sr_rpm_package_uniq(struct sr_rpm_package *packages)
 
             loop = merged;
         }
-
-        prev = loop;
-        loop = loop->next;
+        else
+        {
+            prev = loop;
+            loop = loop->next;
+        }
     }
 
     return packages;
diff --git a/tests/rpm.at b/tests/rpm.at
index dbcabf5..ce2302d 100644
--- a/tests/rpm.at
+++ b/tests/rpm.at
@@ -183,3 +183,50 @@ main(void)
   return 0;
 }
 ]])
+
+## -------------------- ##
+## sr_rpm_package_uniq3 ##
+## -------------------- ##
+AT_TESTFUN([sr_rpm_package_uniq3],
+[[
+#include <lib/rpm.h>
+#include <lib/utils.h>
+#include <assert.h>
+#include <stdint.h>
+
+int
+main(void)
+{
+  struct sr_rpm_package *p1 = sr_rpm_package_new();
+  struct sr_rpm_package *p2 = sr_rpm_package_new();
+  struct sr_rpm_package *p3 = sr_rpm_package_new();
+
+  p1->name = sr_strdup("pango");
+  p1->version = sr_strdup("1.32.3");
+  p1->release = sr_strdup("1.fc18");
+  p1->architecture = sr_strdup("x86_64");
+  p2->install_time = 1363628422;
+  p1->next = p2;
+
+  p2->name = sr_strdup("pango");
+  p2->version = sr_strdup("1.32.3");
+  p2->release = sr_strdup("1.fc18");
+  p2->architecture = sr_strdup("x86_64");
+  p2->install_time = 1363628422;
+  p2->next = p3;
+
+  p3->name = sr_strdup("pango");
+  p3->version = sr_strdup("1.32.3");
+  p3->release = sr_strdup("1.fc18");
+  p3->architecture = sr_strdup("x86_64");
+  p3->install_time = 1363628422;
+
+  struct sr_rpm_package *packages = p1;
+  packages = sr_rpm_package_uniq(packages);
+
+  assert(packages);
+  assert(!packages->next);
+
+  return 0;
+}
+]])
-- 
1.7.11.7



More information about the Crash-catcher mailing list