I noticed while working on the jk/commit-graph-verify-fix topic that free_commit_graph() leaks any slices of a commit-graph-chain except for the first. I naively hoped that fixing that would make t5324 leak-free, but it turns out there were a number of other leaks, so I fixed those, too. A couple of them were in the merge code, which in turn means a bunch of new test scripts are now leak-free. Even though I saw the problem on that other topic, there's no dependency here; this series can be applied directly to master (or possibly even maint, though I didn't try). [01/10]: t6700: mark test as leak-free [02/10]: commit-reach: free temporary list in get_octopus_merge_bases() [03/10]: merge: free result of repo_get_merge_bases() [04/10]: commit-graph: move slab-clearing to close_commit_graph() [05/10]: commit-graph: free all elements of graph chain [06/10]: commit-graph: delay base_graph assignment in add_graph_to_chain() [07/10]: commit-graph: free graph struct that was not added to chain [08/10]: commit-graph: free write-context entries before overwriting [09/10]: commit-graph: free write-context base_graph_name during cleanup [10/10]: commit-graph: clear oidset after finishing write builtin/commit-graph.c | 1 + builtin/merge.c | 5 +++- commit-graph.c | 40 ++++++++++++++---------------- commit-reach.c | 1 + t/t4214-log-graph-octopus.sh | 1 + t/t4215-log-skewed-merges.sh | 1 + t/t5324-split-commit-graph.sh | 2 ++ t/t5328-commit-graph-64bit-time.sh | 2 ++ t/t5521-pull-options.sh | 1 + t/t6009-rev-list-parent.sh | 1 + t/t6416-recursive-corner-cases.sh | 1 + t/t6433-merge-toplevel.sh | 1 + t/t6437-submodule-merge.sh | 1 + t/t6700-tree-depth.sh | 2 ++ t/t7602-merge-octopus-many.sh | 1 + t/t7603-merge-reduce-heads.sh | 1 + t/t7607-merge-state.sh | 1 + t/t7608-merge-messages.sh | 1 + 18 files changed, 42 insertions(+), 22 deletions(-) -Peff