From: Paul Eggert Date: Wed, 6 May 2026 17:18:48 +0000 (-0700) Subject: regex-tests: minor memory cleanup X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=287e658763447cfbc676261af7a7f028261ac4e1;p=thirdparty%2Fgnulib.git regex-tests: minor memory cleanup * tests/test-regex.c (main): No need for regex to be static, and making it auto is more likely to catch memory leaks in debugging platforms. Clean up after its last use. Omit unnecessary setting/freeing of regs that doesn’t test anything. --- diff --git a/ChangeLog b/ChangeLog index 2ab56a2f59..0aef212c36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2026-05-06 Paul Eggert + + regex-tests: minor memory cleanup + * tests/test-regex.c (main): No need for regex to be static, + and making it auto is more likely to catch memory leaks in + debugging platforms. Clean up after its last use. + Omit unnecessary setting/freeing of regs that doesn’t test anything. + 2026-05-06 Bruno Haible pthread-h: Fix compilation error in C++ mode on mingw. diff --git a/tests/test-regex.c b/tests/test-regex.c index ae4b34a300..7b61895744 100644 --- a/tests/test-regex.c +++ b/tests/test-regex.c @@ -166,7 +166,7 @@ bug_regex11 (void) int main (void) { - static struct re_pattern_buffer regex; + struct re_pattern_buffer regex; unsigned char folded_chars[UCHAR_MAX + 1]; const char *s; struct re_registers regs; @@ -237,15 +237,12 @@ main (void) report_error ("%s: %s", pat, s); else { - memset (®s, 0, sizeof regs); int ret = re_search (®ex, data, sizeof data - 1, 0, sizeof data - 1, NULL); if (ret != 0 && ret != 21) report_error ("re_search '%s' on '%s' returned %d", pat, data, ret); regfree (®ex); - free (regs.start); - free (regs.end); } } @@ -515,8 +512,15 @@ main (void) memset (®ex, 0, sizeof regex); static char const pat_badback[] = "0|()0|\\1|0"; s = re_compile_pattern (pat_badback, sizeof pat_badback, ®ex); - if (!s && re_search (®ex, "x", 1, 0, 1, ®s) != -1) - s = "mishandled invalid back reference"; + if (!s) + { + memset (®s, 0, sizeof regs); + if (re_search (®ex, "x", 1, 0, 1, ®s) != -1) + s = "mishandled invalid back reference"; + regfree (®ex); + free (regs.start); + free (regs.end); + } if (s && !streq (s, "Invalid back reference")) report_error ("%s: %s", pat_badback, s);