1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00
1999-08-23  Ulrich Drepper  <drepper@cygnus.com>

	* posix/regexbug1.c: Make it an error if the test fails.

1999-08-23  Andreas Schwab  <schwab@suse.de>
	    Ulrich Drepper  <drepper@cygnus.com>

	* posix/regex.c (re_match_2_internal): Correct check for charset
	after exactn in loop.
This commit is contained in:
Ulrich Drepper
1999-08-23 16:54:35 +00:00
parent c107ccd460
commit a286028236
3 changed files with 28 additions and 22 deletions

View File

@@ -1,3 +1,13 @@
1999-08-23 Ulrich Drepper <drepper@cygnus.com>
* posix/regexbug1.c: Make it an error if the test fails.
1999-08-23 Andreas Schwab <schwab@suse.de>
Ulrich Drepper <drepper@cygnus.com>
* posix/regex.c (re_match_2_internal): Correct check for charset
after exactn in loop.
1999-08-22 Ulrich Drepper <drepper@cygnus.com> 1999-08-22 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add execve syscall. * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add execve syscall.

View File

@@ -4833,26 +4833,23 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
} }
else if ((re_opcode_t) *p2 == charset) else if ((re_opcode_t) *p2 == charset)
{ {
#ifdef DEBUG if ((re_opcode_t) p1[3] == exactn)
register unsigned char c {
= *p2 == (unsigned char) endline ? '\n' : p2[2]; unsigned char *p1end = &p1[5] + p1[4];
#endif unsigned char *runp1 = &p1[5];
#if 0 while (runp1 < p1end)
if ((re_opcode_t) p1[3] == exactn {
&& ! ((int) p2[1] * BYTEWIDTH > (int) p1[5] if ((int) p2[1] * BYTEWIDTH <= (int) *runp1
&& (p2[2 + p1[5] / BYTEWIDTH] || (p2[2 + *runp1 / BYTEWIDTH]
& (1 << (p1[5] % BYTEWIDTH))))) & (1 << (*runp1 % BYTEWIDTH))) == 0)
#else
if ((re_opcode_t) p1[3] == exactn
&& ! ((int) p2[1] * BYTEWIDTH > (int) p1[4]
&& (p2[2 + p1[4] / BYTEWIDTH]
& (1 << (p1[4] % BYTEWIDTH)))))
#endif
{ {
p[-3] = (unsigned char) pop_failure_jump; p[-3] = (unsigned char) pop_failure_jump;
DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", DEBUG_PRINT1 (" No match => pop_failure_jump.\n");
c, p1[5]); break;
}
++runp1;
}
} }
else if ((re_opcode_t) p1[3] == charset_not) else if ((re_opcode_t) p1[3] == charset_not)

View File

@@ -23,9 +23,8 @@ main (void)
if (regexec (&re, "002", 2, ma, 0) != 0) if (regexec (&re, "002", 2, ma, 0) != 0)
{ {
error (0, 0, "\"0*[0-9][0-9]\" did not match \"002\""); error (0, 0, "\"0*[0-9][0-9]\" did not match \"002\"");
/* Comment the following line out until the bug is fixed. */ res = 1;
//res = 1;
} }
return 0; return res;
} }