まつもと ゆきひろです

In message "[ruby-list:1678] Re: ruby-1.0-970110 available"
    on 97/01/10, sinara / blade.nagaokaut.ac.jp <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;