builtin/rev-parse: fix memory leak with --parseopt

The `--parseopt` mode allows shell scripts to have the same option
parsing mode as we have in C builtins. It soaks up a set of option
descriptions via stdin and massages them into proper `struct option`s
that we can then use to parse a set of arguments.

We only partially free those options when done though, creating a memory
leak. Interestingly, we only end up free'ing the first option's help,
which is of course wrong.

Fix this by freeing all option's help fields as well as their `argh`
fields to plug this memory leak.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2024-08-01 12:40:21 +02:00
committed by Junio C Hamano
parent 2e875b6cb4
commit 2d197e4a0f
2 changed files with 6 additions and 1 deletions

View File

@ -1,6 +1,8 @@
#!/bin/sh
test_description='test git rev-parse --parseopt'
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
check_invalid_long_option () {