]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
do not clear providers of a name having a different name 459/head
authorAdrien DELSALLE <ad.delsalle@gmail.com>
Mon, 9 Aug 2021 11:20:03 +0000 (13:20 +0200)
committerAdrien DELSALLE <ad.delsalle@gmail.com>
Mon, 9 Aug 2021 12:08:29 +0000 (14:08 +0200)
it would prevent those solvables for being excluded by strict channel priority

src/rules.c

index 0dcce68e9ae9367ea7715664ad42e727d093f232..5a61939cfb6ea8f9aabcecfe714c8c6ce9f649f4 100644 (file)
@@ -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;