On Mon, Apr 23, 2018 at 3:38 PM, Thomas Gummerer <t.gumme...@gmail.com> wrote:
> There are two members of 'struct add_opts', which are only used inside
> the 'add()' function, but being part of 'struct add_opts' they are
> needlessly also passed to the 'add_worktree' function.
>
> Make them local to the 'add()' function to make it clearer where they
> are used.
>
> Signed-off-by: Thomas Gummerer <t.gumme...@gmail.com>
> ---
> diff --git a/builtin/worktree.c b/builtin/worktree.c
> @@ -27,8 +27,6 @@ struct add_opts {
>         int keep_locked;
> -       const char *new_branch;
> -       int force_new_branch;
>  };
> @@ -395,33 +394,32 @@ static int add(int ac, const char **av, const char 
> *prefix)
> -       if (ac < 2 && !opts.new_branch && !opts.detach) {
> +       if (ac < 2 && !new_branch && !opts.detach) {
>                 int n;
>                 const char *s = worktree_basename(path, &n);
> -               opts.new_branch = xstrndup(s, n);
> +               new_branch = xstrndup(s, n);

Sorry for not noticing this earlier, but when 'new_branch' was part of
'opts', this leaked xstrndup'd string was covered by the UNLEAK(opts)
at the end of the function. However, now that 'new_branch' is a
standalone variable, it needs its own UNLEAK().

Reply via email to