entry: fix leaking pathnames during delayed checkout
commit1f0899978109d732abe5b4825b5cfa40ef1d5885
authorPatrick Steinhardt <ps@pks.im>
Thu, 1 Aug 2024 10:41:06 +0000 (1 12:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 1 Aug 2024 15:47:37 +0000 (1 08:47 -0700)
tree097f65a52a9e9e6878970618b6199c626eda3ee4
parent57fb139b5ee7dcb2ea5182bf33bcd2b07df983c9
entry: fix leaking pathnames during delayed checkout

When filtering files during delayed checkout, we pass a string list to
`async_query_available_blobs()`. This list is initialized with NODUP,
and thus inserted strings will not be owned by the list. In the latter
function we then try to hand over ownership by passing an `xstrup()`'d
value to `string_list_insert()`. But this is not how this works: a NODUP
list does not take ownership of allocated strings and will never free
them for the caller.

Fix this issue by initializing the list as `DUP` instead and dropping
the explicit call to `xstrdup()`. This is okay to do given that this is
the single callsite of `async_query_available_blobs()`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
convert.c
entry.c
t/t2080-parallel-checkout-basics.sh
t/t2082-parallel-checkout-attributes.sh