test-tool regex: call regfree(), fix memory leaks
Fix memory leaks in "test-tool regex" which have been there since
c91841594c
(test-regex: Add a test to check for a bug in the regex
routines, 2012-09-01), as a result we can mark a test as passing with
SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true".
We could regfree() on the die() paths here, which would make some
invocations of valgrind(1) happy, but let's just target SANITIZE=leak
for now. Variables that are still reachable when we die() are not
reported as leaks.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1c343e5aef
commit
a20b0dc796
@ -34,6 +34,7 @@ static int test_regex_bug(void)
|
||||
if (m[0].rm_so == 3) /* matches '\n' when it should not */
|
||||
die("regex bug confirmed: re-build git with NO_REGEX=1");
|
||||
|
||||
regfree(&r);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -94,18 +95,20 @@ int cmd__regex(int argc, const char **argv)
|
||||
die("failed regcomp() for pattern '%s' (%s)", pat, errbuf);
|
||||
}
|
||||
if (!str)
|
||||
return 0;
|
||||
goto cleanup;
|
||||
|
||||
ret = regexec(&r, str, 1, m, 0);
|
||||
if (ret) {
|
||||
if (silent || ret == REG_NOMATCH)
|
||||
return ret;
|
||||
goto cleanup;
|
||||
|
||||
regerror(ret, &r, errbuf, sizeof(errbuf));
|
||||
die("failed regexec() for subject '%s' (%s)", str, errbuf);
|
||||
}
|
||||
|
||||
return 0;
|
||||
cleanup:
|
||||
regfree(&r);
|
||||
return ret;
|
||||
usage:
|
||||
usage("\ttest-tool regex --bug\n"
|
||||
"\ttest-tool regex [--silent] <pattern>\n"
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
test_description='grep icase on non-English locales'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./lib-gettext.sh
|
||||
|
||||
doalarm () {
|
||||
|
Loading…
Reference in New Issue
Block a user