From c6c3088ddbd75236f5d5147b0c89d165eaf1da66 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Wed, 14 Dec 2022 16:47:09 +0100 Subject: [PATCH] Swap from/to in the ruleinfo instead of just overwriting Otherwise we report a wrong providing package. --- src/rules.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rules.c b/src/rules.c index 75198ec9..9be4559f 100644 --- a/src/rules.c +++ b/src/rules.c @@ -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); -- 2.47.3