From: Michael Schroeder Date: Wed, 29 Feb 2012 15:22:34 +0000 (+0100) Subject: - fix cleandeps mistake bug triggered by corner cases X-Git-Tag: BASE-SuSE-Code-12_2-Branch~124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8692486f6743a28b4e9c3dd6989bb8295f60ac81;p=thirdparty%2Flibsolv.git - fix cleandeps mistake bug triggered by corner cases --- diff --git a/src/solver.c b/src/solver.c index 5e6081e2..27a6f4c6 100644 --- a/src/solver.c +++ b/src/solver.c @@ -1444,7 +1444,7 @@ cleandeps_check_mistakes(Solver *solv, int level) int mademistake = 0; if (!solv->cleandepsmap.size) - return level; + return 0; /* check for mistakes */ for (i = solv->installed->start; i < solv->installed->end; i++) { @@ -1485,11 +1485,8 @@ cleandeps_check_mistakes(Solver *solv, int level) } } if (mademistake) - { - level = 1; - solver_reset(solv); - } - return level; + solver_reset(solv); + return mademistake; } /*------------------------------------------------------------------- @@ -2177,10 +2174,11 @@ solver_run_sat(Solver *solv, int disablerules, int doweak) if (solv->installed && solv->cleandepsmap.size) { - olevel = level; - level = cleandeps_check_mistakes(solv, level); - if (level < olevel) - continue; + if (cleandeps_check_mistakes(solv, level)) + { + level = 1; /* restart from scratch */ + continue; + } } if (solv->solution_callback)