rpm/rpm-4.4.2-transaction-order...

28 lines
791 B
Diff

--- rpm-4.4.2/lib/depends.c.order 2006-11-20 11:17:13.000000000 +0000
+++ rpm-4.4.2/lib/depends.c 2006-11-20 11:19:19.000000000 +0000
@@ -1421,7 +1421,14 @@
(void) rpmteSetDegree(q, 0);
tsbytes += rpmtePkgFileSize(q);
- ordering[orderingCount] = rpmteAddedKey(q);
+ switch (rpmteType(q)) {
+ case TR_ADDED:
+ ordering[orderingCount] = rpmteAddedKey(q);
+ /*@switchbreak@*/ break;
+ case TR_REMOVED:
+ ordering[orderingCount] = RPMAL_NOMATCH;
+ /*@switchbreak@*/ break;
+ }
orderingCount++;
qlen--;
loopcheck--;
@@ -1618,7 +1625,7 @@
continue;
j = needle->orIndex;
- if ((q = ts->order[j]) == NULL)
+ if ((q = ts->order[j]) == NULL || needle->pkgKey == RPMAL_NOMATCH)
continue;
newOrder[newOrderCount++] = q;