diff-no-index: release prefixed filenames

Callers of prefix_filename() are responsible for freeing its result.
Remember the returned strings and release them to appease leak checkers.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2022-09-07 13:37:02 +02:00 committed by Junio C Hamano
parent fffe7d81a4
commit 07a6f94a6d

View File

@ -245,6 +245,7 @@ int diff_no_index(struct rev_info *revs,
int i, no_index; int i, no_index;
int ret = 1; int ret = 1;
const char *paths[2]; const char *paths[2];
char *to_free[ARRAY_SIZE(paths)] = { 0 };
struct strbuf replacement = STRBUF_INIT; struct strbuf replacement = STRBUF_INIT;
const char *prefix = revs->prefix; const char *prefix = revs->prefix;
struct option no_index_options[] = { struct option no_index_options[] = {
@ -274,7 +275,7 @@ int diff_no_index(struct rev_info *revs,
*/ */
p = file_from_standard_input; p = file_from_standard_input;
else if (prefix) else if (prefix)
p = prefix_filename(prefix, p); p = to_free[i] = prefix_filename(prefix, p);
paths[i] = p; paths[i] = p;
} }
@ -308,6 +309,8 @@ int diff_no_index(struct rev_info *revs,
ret = diff_result_code(&revs->diffopt, 0); ret = diff_result_code(&revs->diffopt, 0);
out: out:
for (i = 0; i < ARRAY_SIZE(to_free); i++)
free(to_free[i]);
strbuf_release(&replacement); strbuf_release(&replacement);
return ret; return ret;
} }