From: Michael Schroeder Date: Fri, 21 Feb 2014 14:13:54 +0000 (+0100) Subject: fix bug in solver_get_unneeded that could lead to an endless loop X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a9cb3ac94a75fcfada695dd7a81c81c3c5c612b;p=thirdparty%2Flibsolv.git fix bug in solver_get_unneeded that could lead to an endless loop --- diff --git a/src/rules.c b/src/rules.c index 320d7775..19dafb53 100644 --- a/src/rules.c +++ b/src/rules.c @@ -3614,8 +3614,8 @@ solver_get_unneeded(Solver *solv, Queue *unneededq, int filtered) /* now add edge from j + 1 to i + 1 */ queue_insert(&edges, edges.elements[j + 1] + nrequires[j], i + 1); /* addapt following edge pointers */ - for (k = j + 2; k < count + 2; k++) - edges.elements[k]++; + for (j = j + 2; j < count + 1; j++) + edges.elements[j]++; } queue_free(&iq); } @@ -3630,7 +3630,7 @@ solver_get_unneeded(Solver *solv, Queue *unneededq, int filtered) printf(" %s (%d requires):\n", pool_solvid2str(pool, unneededq->elements[i]), nrequires[i]); for (j = edges.elements[i + 1]; edges.elements[j]; j++) printf(" - %s\n", pool_solvid2str(pool, unneededq->elements[edges.elements[j] - 1])); - } + } #endif map_free(&installedm);