1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

extended regexp bug fix

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 1998-03-18 08:47:48 +00:00
parent 15281f2e23
commit ae08a031a6
3 changed files with 10 additions and 6 deletions

View file

@ -1,3 +1,7 @@
Wed Mar 18 17:46:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* regex.c (re_match): forwading failure point popped too much.
Tue Mar 17 18:23:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* math.c (math_frexp): newly added.

View file

@ -1848,7 +1848,7 @@ re_compile_pattern(pattern, size, bufp)
c1 = 0;
GET_UNSIGNED_NUMBER(c1);
if (p < pend) PATUNFETCH;
if (!ISDIGIT(c)) PATUNFETCH;
if (c1 >= regnum) {
/* need to get octal */
@ -2892,6 +2892,8 @@ re_match(bufp, string_arg, size, pos, regs)
/* If not end of string, try backtracking. Otherwise done. */
if (d != dend)
{
while (stackp != stackb && (int)stackp[-1] == 1)
POP_FAILURE_POINT();
if (stackp != stackb)
{
/* More failure points to try. */
@ -3419,8 +3421,6 @@ re_match(bufp, string_arg, size, pos, regs)
SET_REGS_MATCHED;
break;
}
if (stackp != stackb && (int)stackp[-1] == 1)
POP_FAILURE_POINT();
continue; /* Successfully executed one pattern command; keep going. */
/* Jump here if any matching operation fails. */

View file

@ -120,7 +120,7 @@ $bad = false
tmp = open("while_tmp", "r")
while tmp.gets()
if gsub!('vt100', 'VT100')
p gsub!('VT100', 'Vt100')
gsub!('VT100', 'Vt100')
redo;
end
$bad = 1 if /vt100/;
@ -296,7 +296,7 @@ ok(defined? "a".chomp)
ok("abc".scan(/./) == ["a", "b", "c"])
ok("1a2b3c".scan(/(\d.)/) == [["1a"], ["2b"], ["3c"]])
# non-greedy match
ok("a=12;b=22".scan(/(.*?)=(\d*?);?/) == [["a", "12"], ["b", "22"]])
ok("a=12;b=22".scan(/(.*?)=(\d*);?/) == [["a", "12"], ["b", "22"]])
$x = [1]
ok(($x * 5).join(":") == '1:1:1:1:1')