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>

René Scharfe committed Sep 7, 2022 at 13:37 UTC 07a6f94a6d06947d325881460a3798dda0a98cf8
1 file changed +4 -1
diff-no-index.c
+4 -1
@@ -245,6 +245,7 @@ int diff_no_index(struct rev_info *revs,
245 int i, no_index;
246 int ret = 1;
247 const char *paths[2];
248 + char *to_free[ARRAY_SIZE(paths)] = { 0 };
249 struct strbuf replacement = STRBUF_INIT;
250 const char *prefix = revs->prefix;
251 struct option no_index_options[] = {
@@ -274,7 +275,7 @@ int diff_no_index(struct rev_info *revs,
275 */
276 p = file_from_standard_input;
277 else if (prefix)
277 - p = prefix_filename(prefix, p);
278 + p = to_free[i] = prefix_filename(prefix, p);
279 paths[i] = p;
280 }
281
@@ -308,6 +309,8 @@ int diff_no_index(struct rev_info *revs,
309 ret = diff_result_code(&revs->diffopt, 0);
310
311 out:
312 + for (i = 0; i < ARRAY_SIZE(to_free); i++)
313 + free(to_free[i]);
314 strbuf_release(&replacement);
315 return ret;
316 }