diff options
Diffstat (limited to 'lib/transaction.c')
-rw-r--r-- | lib/transaction.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/transaction.c b/lib/transaction.c index 8d2527d55..011e34512 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -909,15 +909,18 @@ rpmdbMatchIterator rpmFindBaseNamesInDB(rpmts ts, uint64_t fileCount) fi = rpmfiInit(rpmteFI(p), 0); while (rpmfiNext(fi) >= 0) { size_t keylen; + unsigned int keyhash; baseName = rpmfiBN(fi); - if (rpmStringSetHasEntry(baseNames, baseName)) + + keyhash = rpmStringSetKeyHash(baseNames, baseName); + if (rpmStringSetHasHEntry(baseNames, baseName, keyhash)) continue; keylen = strlen(baseName); if (keylen == 0) keylen++; /* XXX "/" fixup. */ rpmdbExtendIterator(mi, baseName, keylen); - rpmStringSetAddEntry(baseNames, baseName); + rpmStringSetAddHEntry(baseNames, baseName, keyhash); } } rpmtsiFree(pi); |