Re: [PATCH v7 4/8] worktree: simplify find_shared_symref() memory ownership model
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Dec 2, 2021, 00:32 UTC
- Message-ID
- <CAPig+cT3psyPhsssvJsQw4wzTMLOxf0rhP4H7V4s5g9Wd_kK1g@mail.gmail.com>
- In-Reply-To
- <CAPig+cRX94vMLkW=dAKncPTuuk0Opaj+8-Yqe-qFD1b7mrZ89A@mail.gmail.com>
On Wed, Dec 1, 2021 at 7:13 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 22 quoted lines
> If we instead hoist ownership of `worktrees` up to execute_commands()
> -- which calls execute_commands_atomic() or
> execute_commands_non_atomic() -- then we can get by with retrieving
> the worktrees just once, and all those noise changes in update() can
> be dropped since it will no longer be responsible for allocating or
> freeing `worktrees`. For instance:
>
> static void execute_commands(...)
> {
> struct worktree **worktrees;
> ...
> worktrees = get_worktrees();
> if (use_atomic)
> execute_commands_atomic(commands, si, worktrees);
> else
> execute_commands_non_atomic(commands, si, worktrees);
> free_worktrees(worktrees);
> ...
> }
>
> and then execute_commands_atomic() and execute_commands_non_atomic()
> can pass `worktrees` along to update().By the way, I wouldn't typically recommend this sort of change for public API since it probably exposes too much implementation detail to callers, but as these are all private (static) worker functions -- with very few callers, moreover -- I don't find it terribly worrying.