From: Johannes Schindelin Date: Thu, 15 May 2025 13:11:47 +0000 (+0000) Subject: commit-graph: avoid using stale stack addresses X-Git-Tag: v2.50.0-rc0~7^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ee63d026b407118221aca455a9c4f03a08ecf648;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- 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);