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>
maint
Johannes Schindelin 2025-05-15 13:11:47 +00:00 committed by Junio C Hamano
parent fc451e6ea8
commit ee63d026b4
1 changed files with 9 additions and 0 deletions

View File

@ -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);