]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Treat condition both as positive and negative literal in pool_add_pos_literals_comple...
authorMichael Schroeder <mls@suse.de>
Tue, 18 Apr 2023 09:57:50 +0000 (11:57 +0200)
committerMichael Schroeder <mls@suse.de>
Tue, 18 Apr 2023 09:57:50 +0000 (11:57 +0200)
That's because (A IF B ELSE C) gets rewritten to (A OR ~B) AND (C OR B) and
(A UNLESS B ELSE C) gets rewritten to (A AND ~B) OR (C AND B). In both
cases we have A, B, ~B, C.

This resolves issue #527

src/cplxdeps.c

index 6c40752e2483764fd677e38e8df042f55c2817fd..26e754d95459c7449a99c8549027a23c973a18a5 100644 (file)
@@ -405,6 +405,7 @@ pool_add_pos_literals_complex_dep(Pool *pool, Id dep, Queue *q, Map *m, int neg)
              Reldep *rd2 = GETRELDEP(pool, rd->evr);
              if (rd2->flags == REL_ELSE)
                {
+                 pool_add_pos_literals_complex_dep(pool, rd2->name, q, m, !neg);
                  pool_add_pos_literals_complex_dep(pool, rd2->evr, q, m, !neg);
                  dep = rd2->name;
                }