commit 4bd3f2bbb76e22f763d47c525de6f91eafb0c53d from: Stefan Sperling date: Sun Jun 10 22:27:10 2018 UTC some commits were missing from the commit graph commit - 832c249c3a33c5421502bd9ddd86b05b619ae57c commit + 4bd3f2bbb76e22f763d47c525de6f91eafb0c53d blob - 7c351cca7e27d1cc2b09bfce8cd7eb247a9372c8 blob + 7dd5b8be427df3a57ec980255b2022c804e2f12d --- lib/commit_graph.c +++ lib/commit_graph.c @@ -199,7 +199,7 @@ static const struct got_error * add_iteration_candidate(struct got_commit_graph *graph, struct got_commit_graph_node *node) { - struct got_commit_graph_node *n; + struct got_commit_graph_node *n, *next; if (TAILQ_EMPTY(&graph->iter_candidates)) { TAILQ_INSERT_TAIL(&graph->iter_candidates, node, entry); @@ -212,10 +212,24 @@ add_iteration_candidate(struct got_commit_graph *graph err = compare_commits(&cmp, node->commit, n->commit); if (err) return err; - if (cmp < 0) - continue; - TAILQ_INSERT_BEFORE(n, node, entry); - break; + if (cmp < 0) { + next = TAILQ_NEXT(n, entry); + if (next == NULL) { + TAILQ_INSERT_AFTER(&graph->iter_candidates, n, + node, entry); + break; + } + err = compare_commits(&cmp, node->commit, next->commit); + if (err) + return err; + if (cmp >= 0) { + TAILQ_INSERT_BEFORE(next, node, entry); + break; + } + } else { + TAILQ_INSERT_BEFORE(n, node, entry); + break; + } } return NULL;