]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
- fix core dump, sorry
authorMichael Schroeder <mls@suse.de>
Fri, 4 Apr 2008 10:09:22 +0000 (10:09 +0000)
committerMichael Schroeder <mls@suse.de>
Fri, 4 Apr 2008 10:09:22 +0000 (10:09 +0000)
src/solver.c

index d428336ef00a03c2bf0de1468e77bdfc0c747dab..7bfc4798b786ede6a20e954b47df2b8fa607d48e 100644 (file)
@@ -658,6 +658,23 @@ makeruledecisions(Solver *solv)
        if (solv->decisionq.elements[i] == -v)
          break;
       assert(i < solv->decisionq.count);
+      if (v == -SYSTEMSOLVABLE) {
+       /* conflict with system solvable */
+       queue_push(&solv->problems, solv->learnt_pool.count);
+        queue_push(&solv->learnt_pool, ri);
+       queue_push(&solv->learnt_pool, 0);
+       POOL_DEBUG(SAT_DEBUG_UNSOLVABLE, "conflict with system solvable, disabling rule #%d\n", ri);
+       if (ri < solv->systemrules)
+         v = -(solv->ruletojob.elements[ri - solv->jobrules] + 1);
+       else
+         v = ri;
+       queue_push(&solv->problems, v);
+       queue_push(&solv->problems, 0);
+       disableproblem(solv, v);
+       continue;
+      }
+      assert(solv->decisionq_why.elements[i]);
+#if 0
 /*OBSOLETE*/
       if (solv->decisionq_why.elements[i] == 0)
        {
@@ -678,6 +695,7 @@ makeruledecisions(Solver *solv)
          disableproblem(solv, v);
          continue;
        }
+#endif
       if (solv->decisionq_why.elements[i] < solv->jobrules)
        {
          /* conflict with rpm rule assertion */