]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Swap from/to in the ruleinfo instead of just overwriting
authorMichael Schroeder <mls@suse.de>
Wed, 14 Dec 2022 15:47:09 +0000 (16:47 +0100)
committerMichael Schroeder <mls@suse.de>
Wed, 14 Dec 2022 15:56:40 +0000 (16:56 +0100)
Otherwise we report a wrong providing package.

src/rules.c

index 75198ec906d9a549192b7a26393bd344692c39fc..9be4559f529f3d6ee5cd0cccee8ac8df60140415 100644 (file)
@@ -659,8 +659,12 @@ add_complex_deprules(Solver *solv, Id p, Id dep, int type, int dontfix, Queue *w
              int oldcount = solv->ruleinfoq->count;
              addpkgrule(solv, qele[0], 0, d, type, dep);
              /* fixup from element of ruleinfo */
-             if (solv->ruleinfoq->count > oldcount)
-               solv->ruleinfoq->elements[oldcount + 1] = p;
+             if (solv->ruleinfoq->count > oldcount && solv->ruleinfoq->elements[oldcount + 1] != p)
+               {
+                 if (solv->ruleinfoq->elements[oldcount + 2])
+                   solv->ruleinfoq->elements[oldcount + 2] = solv->ruleinfoq->elements[oldcount + 1];
+                 solv->ruleinfoq->elements[oldcount + 1] = p;
+               }
            }
          else
            addpkgrule(solv, qele[0], 0, d, type, dep);