summaryrefslogtreecommitdiff
path: root/commit-graph.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2025-05-15 13:11:47 +0000
committerJunio C Hamano <gitster@pobox.com>2025-05-15 13:46:48 -0700
commitee63d026b407118221aca455a9c4f03a08ecf648 (patch)
tree4df7ab5c988e0ba02cb9a7aa4b95e2b165e6d920 /commit-graph.c
parentfc451e6ea85310725532cbdbc280f8a56a7ec7df (diff)
commit-graph: avoid using stale stack addresses
The code is a bit too hard to reason about to fully assess whether the `fill_commit_graph_info()` function is called at all after `write_commit_graph()` returns (and hence the stack variable `topo_levels` goes out of context). Let's simply make sure that the stack address is no longer used at that stage, thereby making the code quite a bit easier to reason about. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit-graph.c')
-rw-r--r--commit-graph.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/commit-graph.c b/commit-graph.c
index 9f0115dac9..d052c1bf15 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -2683,6 +2683,15 @@ cleanup:
oid_array_clear(&ctx.oids);
clear_topo_level_slab(&topo_levels);
+ if (ctx.r->objects->commit_graph) {
+ struct commit_graph *g = ctx.r->objects->commit_graph;
+
+ while (g) {
+ g->topo_levels = NULL;
+ g = g->base_graph;
+ }
+ }
+
for (i = 0; i < ctx.num_commit_graphs_before; i++)
free(ctx.commit_graph_filenames_before[i]);
free(ctx.commit_graph_filenames_before);