From: matz@... (Yukihiro Matsumoto) Date: 1997-01-11T23:25:02+09:00 Subject: [ruby-list:1680] Re: ruby-1.0-970110 available まつもと ゆきひろです In message "[ruby-list:1678] Re: ruby-1.0-970110 available" on 97/01/10, sinara@blade.nagaokaut.ac.jp writes: | |原です。 |p "abc\n" =~ /^$/ # ==> 4 | |となってしまいます。 こんなんでどうでしょう? --- regex.c~ Wed Jan 8 00:03:48 1997 +++ regex.c Sat Jan 11 04:50:29 1997 @@ -1563 +1563 @@ - if (bufp->can_be_null != 1) + if (bufp->can_be_null == 0) @@ -1757 +1757 @@ - int val; + int val, anchor; @@ -1768 +1768,3 @@ - while (1) + anchor = (enum regexpcode)bufp->buffer[0] == begline; + + while (startpos < size) @@ -1776 +1778 @@ - if (fastmap && startpos < size && bufp->can_be_null != 1) + if (fastmap && bufp->can_be_null != 1 && !(anchor && startpos == 0)) @@ -1800,0 +1803,4 @@ + if (range >= 0 && startpos == size && bufp->can_be_null == 0) + { + return -1; + } @@ -1813,4 +1819,2 @@ - if (range >= 0 && startpos == size && fastmap) { - if (bufp->can_be_null == 0) - return -1; - } + if (anchor && startpos > 0 && startpos < size + && string[startpos-1] != '\n') goto advance;