From: Junio C Hamano Date: Thu, 03 Oct 2024 16:26:23 GMT Subject: Re: [PATCH v2 3/3] diff: modify output_prefix function pointer Message-ID: In-Reply-To: "Jeff King via GitGitGadget" writes: > From: Jeff King > > The uses of the output_prefix function pointer in the diff_options > struct is currently difficult to work with by returning a pointer to a > strbuf. There is only one use that cares about the length of the string, > which appears to be the only justification of the return type. > > We already noticed confusing memory issues around this return type, so > use a const char * return type to make it clear that the caller does not > own this string buffer. > > Signed-off-by: Jeff King > Signed-off-by: Derrick Stolee > --- > diff-lib.c | 4 ++-- > diff.c | 8 +++----- > diff.h | 2 +- > graph.c | 4 ++-- > log-tree.c | 4 ++-- > range-diff.c | 4 ++-- > 6 files changed, 12 insertions(+), 14 deletions(-) Very nice. > if (opt->diffopt.output_prefix) { > - struct strbuf *msg = NULL; > + const char *msg; > msg = opt->diffopt.output_prefix(&opt->diffopt, > opt->diffopt.output_prefix_data); > - fwrite(msg->buf, msg->len, 1, opt->diffopt.file); > + fwrite(msg, strlen(msg), 1, opt->diffopt.file); > } OK. We are not relying on the strbuf being able to have embedded NUL in the buffer, and this looks very sensible. Thanks.