diff options
| author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2021-10-07 12:01:36 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2021-10-07 15:40:15 -0700 |
| commit | 272f0a574d97ecd245fb0a9ab63c436e8cfe6a06 (patch) | |
| tree | 0d97766f702a2879cb96ff281f48599a1275b0f4 | |
| parent | eab4ac6a233e505e78fc8b04df03d58628d5ff3e (diff) | |
| download | git-272f0a574d97ecd245fb0a9ab63c436e8cfe6a06.tar.gz | |
ls-files: add missing string_list_clear()
Fix a memory leak that's been here ever since 72aeb18772d (clean.c,
ls-files.c: respect encapsulation of exclude_list_groups, 2013-01-16),
we dup'd the argument in option_parse_exclude(), but never freed the
string_list.
This makes almost all of t3001-ls-files-others-exclude.sh pass (it had
a lot of failures before). Let's mark it as passing with
TEST_PASSES_SANITIZE_LEAK=true, and then exclude the tests that still
failed with a !SANITIZE_LEAK prerequisite check until we fix those
leaks. We can still see the failed tests under
GIT_TEST_FAIL_PREREQS=true.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | builtin/ls-files.c | 1 | ||||
| -rwxr-xr-x | t/t3001-ls-files-others-exclude.sh | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/builtin/ls-files.c b/builtin/ls-files.c index fcc685947f..031fef1bca 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -781,6 +781,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) ret = 1; } + string_list_clear(&exclude_list, 0); dir_clear(&dir); free(max_prefix); return ret; diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh index 516c95ea0e..48cec4e5f8 100755 --- a/t/t3001-ls-files-others-exclude.sh +++ b/t/t3001-ls-files-others-exclude.sh @@ -8,6 +8,7 @@ test_description='git ls-files --others --exclude This test runs git ls-files --others and tests --exclude patterns. ' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh rm -fr one three @@ -102,7 +103,7 @@ test_expect_success \ >output && test_cmp expect output' -test_expect_success 'restore gitignore' ' +test_expect_success !SANITIZE_LEAK 'restore gitignore' ' git checkout --ignore-skip-worktree-bits $allignores && rm .git/index ' @@ -125,7 +126,7 @@ cat > expect << EOF # three/ EOF -test_expect_success 'git status honors core.excludesfile' \ +test_expect_success !SANITIZE_LEAK 'git status honors core.excludesfile' \ 'test_cmp expect output' test_expect_success 'trailing slash in exclude allows directory match(1)' ' |
