commit - 98fdf1e045e1e5aca2bddf8ca07778ef7dd86a78
commit + fe8df4c20ba7f071fe1ce416388a69c241201c69
blob - 4ec98d9b24d734b3a32faf3dae874a0ca67ac6dc
blob + 958b66ec82b4dd7e18be4a27f9d081e78e7b6484
--- lib/commit_graph.c
+++ lib/commit_graph.c
return;
}
+ /* Ensure that an iteration in progress will see this new commit. */
+ if (graph->iter_node) {
+ n = graph->iter_node;
+ while (n) {
+ next = TAILQ_NEXT(n, entry);
+ if (next &&
+ node->commit_timestamp >= next->commit_timestamp) {
+ TAILQ_INSERT_BEFORE(next, node, entry);
+ return;
+ }
+ n = next;
+ }
+ TAILQ_INSERT_AFTER(&graph->iter_list, graph->iter_node,
+ node, entry);
+ return;
+ }
+
/*
* If a child node is known, begin looping over the list there
* instead of beginning from the list head.
/* Insert into list based on committer timestamp. */
do {
if (node->commit_timestamp == n->commit_timestamp) {
- /*
- * Insert after, rather than before, so that an
- * iteration in progress will see this new commit.
- */
TAILQ_INSERT_AFTER(&graph->iter_list, n, node, entry);
break;
} else if (node->commit_timestamp < n->commit_timestamp) {