Re: [PATCH] checkout-index.c: Unconditionally free memory
On Fri, May 1, 2015 at 3:28 PM, Stefan Beller <sbeller@google.com> wrote:
Show 10 quoted lines
> It's safe to free the char pointer `p` unconditionally.
>
> The pointer is assigned just 2 lines earlier as a return from
> prefix_path, which allocates new memory for its return value.
>
> Then it is used in checkout_file, which passes the pointer on to
> cache_name_pos and write_tempfile_record, both of which do not store
> the pointer in any permanent record.
>
> So the condition on when to free the pointer is just "always".
Why doesn't the 'p' in the 'while' loop just below deserve the same treatment?
Show 24 quoted lines
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
> diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c
> index 9ca2da1..e28dc35 100644
> --- a/builtin/checkout-index.c
> +++ b/builtin/checkout-index.c
> @@ -249,8 +249,8 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
> die("git checkout-index: don't mix '--stdin' and explicit filenames");
> p = prefix_path(prefix, prefix_length, arg);
> checkout_file(p, prefix);
> - if (p < arg || p > arg + strlen(arg))
> - free((char *)p);
> +
> + free((char *)p);
> }
>
> if (read_from_stdin) {
> --
> 2.4.0.rc3.16.g0ab00b9
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html