On Fri, May 1, 2015 at 12:50 PM, Jeff King <peff@xxxxxxxx> wrote: > On Fri, May 01, 2015 at 12:28:27PM -0700, Stefan Beller 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". > > That of course makes me wonder why somebody would write this in the > first place. :) > > It looks like it comes from be65e7d (Fix users of prefix_path() to > free() only when necessary, 2006-05-07), which claims that prefix_path > sometimes does not allocate. When did that change? Looks like maybe > d089eba (setup: sanitize absolute and funny paths in get_pathspec(), > 2008-01-28), but it certainly is the case now. > > Probably all of the other sites touched by be65e7d could use the same > treatment. I looked around, just as Eric suggested as well and found those too. I don't think I'll track down the history of when this change became possible, but I'd rather point to (f5114a40c0d0, 2011-08-04, git-check-attr: Normalize paths), where the result of prefix_path is freed unconditionally already. > > -Peff -- 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