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". Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- builtin/checkout-index.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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