Re: [PATCH 2/2] branch: drop unused worktrees variable
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 21, 2022, 15:56 UTC
- Message-ID
- <xmqqzgi6hux8.fsf@gitster.g>
- In-Reply-To
- <Yq6eJFUPPTv/zc0o@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 15 quoted lines
> After b489b9d9aa (branch: use branch_checked_out() when deleting refs, > 2022-06-14), we no longer look at our local "worktrees" variable, since > branch_checked_out() handles it under the hood. The compiler didn't > notice the unused variable because we call functions to initialize and > free it (so it's not totally unused, it just doesn't do anything > useful). > > Signed-off-by: Jeff King <peff@peff.net> > --- > It would be neat if there was some way to mark a function as "this is > just allocating a structure, with no useful side effects" and another as > "this is just freeing", which would let the compiler notice that we > don't do anything useful with the structure in between the two. I have a > feeling adding such annotations might be more work than occasionally > finding and cleaning up such useless variables, though. :)
Also it may be tricky to write correctly ;-)
I recently got rid of a Coccinelle rule I wrote quite a while ago that was suggesting a completely bogus rewrite, and found it quite satisfying. After that experience, I got allergic to the idea of having to make sure a mechanical rewrite suggested by the tool if it gets too large X-<.
For this particular pattern, presumably we won't have too many of them, though.
Thanks.
Show 32 quoted lines
> builtin/branch.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/builtin/branch.c b/builtin/branch.c
> index f875952e7b..55cd9a6e99 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -204,7 +204,6 @@ static void delete_branch_config(const char *branchname)
> static int delete_branches(int argc, const char **argv, int force, int kinds,
> int quiet)
> {
> - struct worktree **worktrees;
> struct commit *head_rev = NULL;
> struct object_id oid;
> char *name = NULL;
> @@ -242,8 +241,6 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
> die(_("Couldn't look up commit object for HEAD"));
> }
>
> - worktrees = get_worktrees();
> -
> for (i = 0; i < argc; i++, strbuf_reset(&bname)) {
> char *target = NULL;
> int flags = 0;
> @@ -314,7 +311,6 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
>
> free(name);
> strbuf_release(&bname);
> - free_worktrees(worktrees);
>
> return ret;
> }