From: Michael Schroeder Date: Mon, 15 Dec 2014 15:11:15 +0000 (+0100) Subject: save and restore branches when creating solutions X-Git-Tag: 0.6.7~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4815a4ad04a2e57e14e7aaf81b250df19dcbf3a9;p=thirdparty%2Flibsolv.git save and restore branches when creating solutions --- diff --git a/src/problems.c b/src/problems.c index c82baa86..528aa2ea 100644 --- a/src/problems.c +++ b/src/problems.c @@ -588,7 +588,7 @@ create_solutions(Solver *solv, int probnr, int solidx) { Pool *pool = solv->pool; Queue redoq; - Queue problem, solution, problems_save; + Queue problem, solution, problems_save, branches_save; int i, j, nsol; int essentialok; unsigned int now; @@ -620,6 +620,10 @@ create_solutions(Solver *solv, int probnr, int solidx) problems_save = solv->problems; memset(&solv->problems, 0, sizeof(solv->problems)); + /* save branches queue */ + branches_save = solv->problems; + memset(&solv->branches, 0, sizeof(solv->branches)); + /* extract problem from queue */ queue_init(&problem); for (i = solidx + 1; i < solv->solutions.count; i++) @@ -717,6 +721,10 @@ create_solutions(Solver *solv, int probnr, int solidx) queue_free(&solv->problems); solv->problems = problems_save; + /* restore branches */ + queue_free(&solv->branches); + solv->branches = branches_save; + if (solv->cleandeps_mistakes) { if (oldmistakes)