From 51d4b69ff1acb37cd9e87dee5c36a04f25b7a09d Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 31 Oct 2026 15:27:57 -0700 Subject: Release only finished walks, never cgit's mailmap release_revisions frees revs->mailmap, and the log page points it at the static list cgit_mailmap returns, so every log of a repository with enable-mailmap aborted. A walk whose setup failed holds commits that are already freed, so releasing it could free them twice. --- source/ui-log.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/ui-log.c') diff --git a/source/ui-log.c b/source/ui-log.c index ef52951..5b3a88a 100644 --- a/source/ui-log.c +++ b/source/ui-log.c @@ -612,8 +612,10 @@ void cgit_print_log(const char *tip, int ofs, int cnt, const char *grep, const c html("\n"); } -out: + // The mailmap is cgit's own and outlives the walk. + rev.mailmap = NULL; release_revisions(&rev); +out: if (must_free_tip) free((char *)tip); strvec_clear(&rev_argv); -- cgit