Browse Source

test/regex/tst-regex2.c: fix the rest of testsuite failures

Denis Vlasenko 15 years ago
parent
commit
66dfcf4efb
2 changed files with 16 additions and 1 deletions
  1. 12 1
      libc/misc/regex/regex_old.c
  2. 4 0
      test/README

+ 12 - 1
libc/misc/regex/regex_old.c

@@ -6099,7 +6099,18 @@ byte_re_match_2_internal (
                 { /* No.  So allocate them with malloc.  We need one
                      extra element beyond `num_regs' for the `-1' marker
                      GNU code uses.  */
-                  regs->num_regs = MIN (RE_NREGS, num_regs + 1);
+// regex specs say:
+//  "If REGS_UNALLOCATED, allocate space in the regs structure
+//   for max(RE_NREGS, re_nsub + 1) groups"
+// but real-world testsuites fail with contrived examples
+// with lots of groups.
+// I don't see why we can't just allocate exact needed number.
+// Incidentally, it makes RE_NREGS unused.
+//
+// regs->num_regs = MAX (RE_NREGS, num_regs + 1); - VERY WRONG
+// regs->num_regs = MIN (RE_NREGS, num_regs + 1); - slightly less wrong
+// good one which passes uclibc test/regex/tst-regex2.c:
+                  regs->num_regs = num_regs + 1;
                   regs->start = TALLOC (regs->num_regs, regoff_t);
                   regs->end = TALLOC (regs->num_regs, regoff_t);
                   if (regs->start == NULL || regs->end == NULL)

+ 4 - 0
test/README

@@ -19,11 +19,15 @@ make all
 This will build and run tests.
 
 The following make variables may help you in testing:
+
  - UCLIBC_ONLY  - only run tests against uClibc
  - GLIBC_ONLY   - only run tests against glibc
  - V / VERBOSE  - run tests with a lot of output
  - TEST_INSTALLED_UCLIBC - Test installed libraries 
                            under /lib and /usr/lib.
+ - TIMEOUTFACTOR=nn - increase test timeout nn times.
+                  At least REGEX_OLD + regex/tst-regex2 needs it increased.
+
 So, to just run the uClibc tests, try this:
 make check UCLIBC_ONLY=1