On Fri, May 1, 2015 at 3:28 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > 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? > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html