]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
save and restore branches when creating solutions
authorMichael Schroeder <mls@suse.de>
Mon, 15 Dec 2014 15:11:15 +0000 (16:11 +0100)
committerMichael Schroeder <mls@suse.de>
Mon, 15 Dec 2014 15:11:15 +0000 (16:11 +0100)
src/problems.c

index c82baa8660ea85aa9308754ca73d7e8f8b7a2319..528aa2eaca9bfe97ec395034a54b0aaa880948b4 100644 (file)
@@ -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)