aboutsummaryrefslogtreecommitdiffstats
path: root/t/t9116-git-svn-log.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2024-06-04 06:13:10 -0400
committerJunio C Hamano <gitster@pobox.com>2024-06-04 10:38:23 -0700
commit4d7f95ed1f5c4a8842f8a9f9614ee0c66c85bfbd (patch)
treea272647496acd17a82ed3d949be4d2836c08da37 /t/t9116-git-svn-log.sh
parent2181fe6e464c4a2615db0df1189d1e6fb0575631 (diff)
downloadgit-4d7f95ed1f5c4a8842f8a9f9614ee0c66c85bfbd.tar.gz
sparse-checkout: pass string literals directly to add_pattern()
The add_pattern() function takes a pattern string, but neither makes a copy of it nor takes ownership of the memory. So it is the caller's responsibility to make sure the string hangs around as long as the pattern_list which references it. There are a few cases in sparse-checkout where we use string literal patterns by stuffing them into a strbuf, detaching the buffer, and then passing the result into add_pattern(). This creates a leak when the pattern_list is eventually cleared, since we don't retain a copy of the detached buffer to free. But we can observe that the whole strbuf dance is unnecessary. The point was presumably[1] to satisfy the lifetime requirement of the string. But string literals have static duration; we can count on them lasting for the whole program. So we can fix the leak by just passing them directly. And as a bonus, that simplifies the code. The leaks can be seen in t7002, which drops from 25 leaks to 22 with this patch. It also makes t3602 and t1090 leak-free. In the long run, we will also want to clean up this (undocumented!) memory lifetime requirement of add_pattern(). But that can come in a later patch; passing the string literals directly will be the right thing either way. [1] The code in question comes from 416adc8711 (sparse-checkout: update working directory in-process for 'init', 2019-11-21) and 99dfa6f970 (sparse-checkout: use in-process update for disable subcommand, 2019-11-21), but I didn't see anything in their commit messages or on the list explaining the strbufs. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t9116-git-svn-log.sh')
0 files changed, 0 insertions, 0 deletions