diff options
author | Taylor Blau <me@ttaylorr.com> | 2021-10-26 17:01:13 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-10-27 16:26:37 -0700 |
commit | 9e39acc94ad42362243811a359c2972049e8c880 (patch) | |
tree | cd094a2d15f60d0af64b78325cb0444c995a9b3c /git-bisect.sh | |
parent | t/helper/test-read-midx.c: free MIDX within read_midx_file() (diff) | |
download | tgif-9e39acc94ad42362243811a359c2972049e8c880.tar.xz |
builtin/pack-objects.c: don't leak memory via arguments
When constructing arguments to pass to setup_revision(), pack-objects
only frees the memory used by that array after calling
get_object_list().
Ensure that we call strvec_clear() whether or not we use the arguments
array by cleaning up whenever we exit the function (and rewriting one
early return to jump to a label which frees the memory and then
returns).
We could avoid setting this array up altogether unless we are in the
if-else block that calls get_object_list(), but setting up the argument
array is intermingled with lots of other side-effects, e.g.:
if (exclude_promisor_objects) {
use_internal_rev_list = 1;
fetch_if_missing = 0;
strvec_push(&rp, "--exclude-promisor-objects");
}
So it would be awkward to check exclude_promisor_objects twice: first to
set use_internal_rev_list and fetch_if_missing, and then again above
get_object_list() to push the relevant argument onto the array.
Instead, leave the array's construction alone and make sure to free it
unconditionally.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-bisect.sh')
0 files changed, 0 insertions, 0 deletions