Browse Source

ls-files: add missing string_list_clear()

Fix a memory leak that's been here ever since 72aeb18772 (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>
maint
Ævar Arnfjörð Bjarmason 3 years ago committed by Junio C Hamano
parent
commit
272f0a574d
  1. 1
      builtin/ls-files.c
  2. 5
      t/t3001-ls-files-others-exclude.sh

1
builtin/ls-files.c

@ -781,6 +781,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) @@ -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;

5
t/t3001-ls-files-others-exclude.sh

@ -8,6 +8,7 @@ test_description='git ls-files --others --exclude @@ -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 \ @@ -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 @@ -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)' '

Loading…
Cancel
Save