[PATCH 0/5] diff output_prefix cleanups
- From
Jeff King <peff@peff.net>
- Date
- Oct 3, 2024, 21:05 UTC
- Message-ID
- <20241003210548.GB11180@coredump.intra.peff.net>
- In-Reply-To
- <pull.1806.v2.git.1727956724.gitgitgadget@gmail.com>
On Thu, Oct 03, 2024 at 11:58:41AM +0000, Derrick Stolee via GitGitGadget wrote:
Show 14 quoted lines
> 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