Re: [PATCH 4/4] worktree add: let worktree_basename() return string copy
- From
René Scharfe <l.s.r@web.de>
- Date
- Aug 26, 2026, 04:37 UTC
- Message-ID
- <18e65a59-2d33-4f47-a5eb-ca5971cec482@web.de>
- In-Reply-To
- <xmqqld9uklud.fsf@gitster.g>
On 8/25/26 10:04 PM, Junio C Hamano wrote:
Show 18 quoted lines
> René Scharfe <l.s.r@web.de> writes: > >> worktree_basename() requires callers to do pointer arithmetic to get the >> actual basename. Simplify them by doing the calculations in the >> function and returning a copy of the basename directly. > > OK. > >> Remind programmers to free the result by renaming the function to >> worktree_basename_dup(). Two already do; convert the remaining one from > > This is a bit surprising, depending on what "do" refers to, as I > read it to mean "Two callers already free what is returned by the > worktree_basename() function", which cannot be the case (or they > would be segfaulting already). So I must have misunderstood this > sentence. I count three callers of the function, so two do > something while the other one that needs conversion does something > else.
It's confusing because I changed "callers" to "programmers" last minute and forgot to adjust the next sentence.
>> resetting a shared strbuf to freeing the allocated string, which >> requires the same number of lines, but no arithmetic. The added >> allocation is negligible because it's small and there's only one per run >> of "git worktree add".
Show 8 quoted lines
> So going back to the confusing part of the log message, > > Remind ... to worktree_basename_dup(). Among the three callers > of worktree_basename(), two immediately make copies of the > returned string before using and freeing it, which makes for an > easy conversion. Convert the other one from resetting ... > > or something like that, perhaps?
Yes.
René