From 29d8c62437c71410061daa6a1b3ec0ec566eb559 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 24 Feb 2026 02:35:18 +0100 Subject: ui-log: don't free diff object when outputting diff In git 2.36, the logic for diff_flush() changed, resulting in our object getting freed, which led to following renames producing garbage commits until it eventually crashed. Fixes: bb02e24 ("git: update to v2.36.0") Signed-off-by: Jason A. Donenfeld --- ui-log.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ui-log.c b/ui-log.c index 31fb783..c7b3b3f 100644 --- a/ui-log.c +++ b/ui-log.c @@ -167,6 +167,7 @@ static int show_commit(struct commit *commit, struct rev_info *revs) revs->diffopt.output_format = DIFF_FORMAT_CALLBACK; revs->diffopt.format_callback = cgit_diff_tree_cb; revs->diffopt.format_callback_data = handle_rename; + revs->diffopt.no_free = 1; diff_flush(&revs->diffopt); revs->diffopt.output_format = saved_fmt; revs->diffopt.flags = saved_flags; -- cgit v1.3