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 */
|
if (m[0].rm_so == 3) /* matches '\n' when it should not */
|
||||||
die("regex bug confirmed: re-build git with NO_REGEX=1");
|
die("regex bug confirmed: re-build git with NO_REGEX=1");
|
||||||
|
|
||||||
|
regfree(&r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,18 +95,20 @@ int cmd__regex(int argc, const char **argv)
|
|||||||
die("failed regcomp() for pattern '%s' (%s)", pat, errbuf);
|
die("failed regcomp() for pattern '%s' (%s)", pat, errbuf);
|
||||||
}
|
}
|
||||||
if (!str)
|
if (!str)
|
||||||
return 0;
|
goto cleanup;
|
||||||
|
|
||||||
ret = regexec(&r, str, 1, m, 0);
|
ret = regexec(&r, str, 1, m, 0);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (silent || ret == REG_NOMATCH)
|
if (silent || ret == REG_NOMATCH)
|
||||||
return ret;
|
goto cleanup;
|
||||||
|
|
||||||
regerror(ret, &r, errbuf, sizeof(errbuf));
|
regerror(ret, &r, errbuf, sizeof(errbuf));
|
||||||
die("failed regexec() for subject '%s' (%s)", str, errbuf);
|
die("failed regexec() for subject '%s' (%s)", str, errbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
cleanup:
|
||||||
|
regfree(&r);
|
||||||
|
return ret;
|
||||||
usage:
|
usage:
|
||||||
usage("\ttest-tool regex --bug\n"
|
usage("\ttest-tool regex --bug\n"
|
||||||
"\ttest-tool regex [--silent] <pattern>\n"
|
"\ttest-tool regex [--silent] <pattern>\n"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='grep icase on non-English locales'
|
test_description='grep icase on non-English locales'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./lib-gettext.sh
|
. ./lib-gettext.sh
|
||||||
|
|
||||||
doalarm () {
|
doalarm () {
|
||||||
|
Loading…
Reference in New Issue
Block a user