]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
fix bug in solver_get_unneeded that could lead to an endless loop
authorMichael Schroeder <mls@suse.de>
Fri, 21 Feb 2014 14:13:54 +0000 (15:13 +0100)
committerMichael Schroeder <mls@suse.de>
Fri, 21 Feb 2014 17:00:43 +0000 (18:00 +0100)
src/rules.c

index 59272fd4c0b642280e98d683832b43d868264c12..9a3c43334dbf7ace530dd9492ab2b092f3c10a4b 100644 (file)
@@ -3675,8 +3675,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);
                  }
@@ -3691,7 +3691,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);