From: Adrien DELSALLE Date: Mon, 9 Aug 2021 11:20:03 +0000 (+0200) Subject: do not clear providers of a name having a different name X-Git-Tag: 0.7.21~23^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F459%2Fhead;p=thirdparty%2Flibsolv.git do not clear providers of a name having a different name it would prevent those solvables for being excluded by strict channel priority --- diff --git a/src/rules.c b/src/rules.c index 0dcce68e..5a61939c 100644 --- a/src/rules.c +++ b/src/rules.c @@ -4165,24 +4165,21 @@ void solver_addstrictrepopriorules(struct s_Solver *solv, Map *addedmap) { Solvable *s2 = pool->solvables + p2; if (s->name != s2->name) - { - MAPCLR(&priomap, p2); continue; - } if (s2->repo->priority > max_prio) max_prio = s2->repo->priority; } - FOR_PROVIDES(p2, pp2, s->name) + FOR_PROVIDES(p2, pp2, s->name) { Solvable *s2 = pool->solvables + p2; - if (!MAPTST(&priomap, p2)) - continue; - MAPCLR(&priomap, p2); + if (s->name != s2->name || !MAPTST(&priomap, p2)) + continue; + MAPCLR(&priomap, p2); if (pool->installed && s2->repo == pool->installed) continue; - if (s2->repo->priority < max_prio) - solver_addrule(solv, -p2, 0, 0); + if (s2->repo->priority < max_prio) + solver_addrule(solv, -p2, 0, 0); } } solv->strictrepopriorules_end = solv->nrules;