summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2017-12-21 05:22:36 +0100
committerAllan McRae <allan@archlinux.org>2018-01-06 04:35:48 +0100
commit3a9a510ca873df123a117133c7cb3ebaa711159c (patch)
treeeaf45ea5b0fa926e2037f2fbb67c853da52a894a
parent8bf972824a331ebcb30de01103b26b92b6792d59 (diff)
downloadpacman-3a9a510ca873df123a117133c7cb3ebaa711159c.tar.gz
pacman-3a9a510ca873df123a117133c7cb3ebaa711159c.tar.xz
do not rely on name hashes for matching
6cfc4757b98e813428d261dbc185e20618ca83a6 was overzealous in attempting to optimize away a call to strcmp based on a comparison of hashes. The call can be skipped if the hashes are different, but different strings could have the same hash. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--lib/libalpm/deps.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 96f91739..3d3f8ef2 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -698,10 +698,8 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
}
for(j = _alpm_db_get_pkgcache(db); j; j = j->next) {
alpm_pkg_t *pkg = j->data;
- /* with hash != hash, we can even skip the strcmp() as we know they can't
- * possibly be the same string */
- if(pkg->name_hash != dep->name_hash && _alpm_depcmp(pkg, dep)
- && !alpm_pkg_find(excluding, pkg->name)) {
+ if((pkg->name_hash != dep->name_hash || strcmp(pkg->name, dep->name) != 0)
+ && _alpm_depcmp(pkg, dep) && !alpm_pkg_find(excluding, pkg->name)) {
if(alpm_pkg_should_ignore(handle, pkg)) {
alpm_question_install_ignorepkg_t question = {
.type = ALPM_QUESTION_INSTALL_IGNOREPKG,