On Thu, Oct 03, 2024 at 11:58:41AM +0000, Derrick Stolee via GitGitGadget wrote: > This fixes a regression introduced in 2.46.0. > > The change made in 394affd46d (line-log: always allocate the output prefix, > 2024-06-07) made the method more consistent in that it did not return a > static empty string that would fail to free(), but it does lead to > double-frees when a strbuf buffer is freed multiple times. > > In v2, I add Peff's test to the first patch. I also split his diff into two > more follow-up patches because the additional clarity seems valuable to me. > I have forged his sign-off in all three patches. > > Note to the maintainer: feel free to take only the first patch, as Peff > replied that he may work on the remaining cleanup independently (but I had > already prepared patches 2 & 3). Oh, I wasn't expecting you to go to that trouble, and had already polished them up myself. :) So certainly your patch 1 looks good to me now. Here's what I would put on top (but I would suggest making it a separate branch, since yours is a fairly urgent fix and mine is all cleanup). [1/5]: line-log: use diff_line_prefix() instead of custom helper [2/5]: diff: drop line_prefix_length field [3/5]: diff: return const char from output_prefix callback [4/5]: diff: return line_prefix directly when possible [5/5]: diff: store graph prefix buf in git_graph struct diff-lib.c | 4 ++-- diff.c | 10 +++------- diff.h | 3 +-- graph.c | 29 +++++++++++++++++------------ line-log.c | 14 ++------------ log-tree.c | 7 +------ range-diff.c | 4 ++-- 7 files changed, 28 insertions(+), 43 deletions(-) -Peff