Remember to free db index iterators too on forced termination
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 15 Apr 2011 07:35:34 +0000 (10:35 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 15 Apr 2011 07:36:21 +0000 (10:36 +0300)
lib/rpmdb.c

index cf99c56..7008c41 100644 (file)
@@ -509,6 +509,7 @@ int rpmdbCheckTerminate(int terminate)
     if (terminating) {
        rpmdb db;
        rpmdbMatchIterator mi;
+       rpmdbIndexIterator ii;
 
        while ((mi = rpmmiRock) != NULL) {
            rpmmiRock = mi->mi_next;
@@ -516,6 +517,12 @@ int rpmdbCheckTerminate(int terminate)
            mi = rpmdbFreeIterator(mi);
        }
 
+       while ((ii = rpmiiRock) != NULL) {
+           rpmiiRock = ii->ii_next;
+           ii->ii_next = NULL;
+           ii = rpmdbIndexIteratorFree(ii);
+       }
+
        while ((db = rpmdbRock) != NULL) {
            rpmdbRock = db->db_next;
            db->db_next = NULL;