fix targeted dup, we also have to add the obsoleters to the involved map
authorMichael Schroeder <mls@suse.de>
Thu, 29 Nov 2012 12:51:10 +0000 (13:51 +0100)
committerMichael Schroeder <mls@suse.de>
Thu, 29 Nov 2012 12:51:10 +0000 (13:51 +0100)
src/rules.c

index a6940df..7764bdf 100644 (file)
@@ -1241,22 +1241,20 @@ solver_createdupmaps(Solver *solv)
                      if (!targeted && ps->repo != installed)
                        MAPSET(&solv->dupmap, pi);
                    }
-                 if (!targeted)
+                 if (s->repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start])
                    {
-                     if (solv->obsoletes && solv->obsoletes[p - installed->start])
+                     Id *opp;
+                     for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;)
                        {
-                         Id *opp;
-                         for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;)
-                           {
-                             ps = pool->solvables + pi;
-                             if (ps->repo == installed)
-                               continue;
-                             MAPSET(&solv->dupinvolvedmap, pi);
-                             MAPSET(&solv->dupmap, pi);
-                           }
+                         ps = pool->solvables + pi;
+                         if (ps->repo == installed)
+                           continue;
+                         MAPSET(&solv->dupinvolvedmap, pi);
+                         if (!targeted)
+                           MAPSET(&solv->dupmap, pi);
                        }
                    }
-                 else if (s->obsoletes)
+                 if (targeted && s->obsoletes)
                    {
                      /* XXX: check obsoletes/provides combination */
                      obsp = s->repo->idarraydata + s->obsoletes;
@@ -1312,22 +1310,20 @@ solver_createdupmaps(Solver *solv)
                  if (!targeted && ps->repo != installed)
                    MAPSET(&solv->dupmap, pi);
                }
-             if (!targeted)
+             if (s->repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start])
                {
-                 if (repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start])
+                 Id *opp;
+                 for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;)
                    {
-                     Id *opp;
-                     for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;)
-                       {
-                         ps = pool->solvables + pi;
-                         if (ps->repo == installed)
-                           continue;
-                         MAPSET(&solv->dupinvolvedmap, pi);
-                         MAPSET(&solv->dupmap, pi);
-                       }
+                     ps = pool->solvables + pi;
+                     if (ps->repo == installed)
+                       continue;
+                     MAPSET(&solv->dupinvolvedmap, pi);
+                     if (!targeted)
+                       MAPSET(&solv->dupmap, pi);
                    }
                }
-             else if (s->obsoletes)
+             if (targeted && s->obsoletes)
                {
                  /* XXX: check obsoletes/provides combination */
                  obsp = s->repo->idarraydata + s->obsoletes;