Panu Matilainen f3f6be
commit a3ec6066af23e0c9e0de6160c14cb2a502e8fa89
Panu Matilainen f3f6be
Author: Panu Matilainen <pmatilai@redhat.com>
Panu Matilainen f3f6be
Date:   Fri Jan 21 13:52:17 2011 +0200
Panu Matilainen f3f6be
Panu Matilainen f3f6be
    Fix rpmdb index match iteration termination with NULL keyp (#671149)
Panu Matilainen f3f6be
    - When iterating secondary indexes with NULL keyp, the last entry
Panu Matilainen f3f6be
      was being returned twice as dbiAppendSet() would get called
Panu Matilainen f3f6be
      even when dbiGet() returned non-zero.
Panu Matilainen f3f6be
Panu Matilainen f3f6be
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
Panu Matilainen f3f6be
index e58de35..dc6d7a7 100644
Panu Matilainen f3f6be
--- a/lib/rpmdb.c
Panu Matilainen f3f6be
+++ b/lib/rpmdb.c
Panu Matilainen f3f6be
@@ -2048,10 +2048,9 @@ rpmdbMatchIterator rpmdbInitIterator(rpmdb db, rpmDbiTagVal rpmtag,
Panu Matilainen f3f6be
             /* get all entries from index */
Panu Matilainen f3f6be
             xx = dbiCopen(dbi, &dbcursor, 0);
Panu Matilainen f3f6be
 
Panu Matilainen f3f6be
-            while (rc==0) {
Panu Matilainen f3f6be
+            while ((rc = dbiGet(dbi, dbcursor, &key, &data, DB_NEXT)) == 0) {
Panu Matilainen f3f6be
                 dbiIndexSet newset = NULL;
Panu Matilainen f3f6be
 
Panu Matilainen f3f6be
-                rc = dbiGet(dbi, dbcursor, &key, &data, DB_NEXT);
Panu Matilainen f3f6be
                 (void) dbt2set(dbi, &data, &newset);
Panu Matilainen f3f6be
                 if (set == NULL) {
Panu Matilainen f3f6be
                     set = newset;