まつもと ゆきひろです

In message "[ruby-list:6453] Re: gsub"
    on 98/02/17, Yukihiro Matsumoto <matz / netlab.co.jp> writes:

|まつもと ゆきひろです

||"foo\nbar\nbaz\n".gsub!(/^/, '#')
||=> "#foo\n#bar\n#baz\n"
||
||となるものかと思っていたのですが、どうもそうならないのですが、そういう
||もんなんでしょうか?
|
|バグですね.しまったなあ.

こんなパッチでどうでしょう?

--- string.c	1998/02/10 08:44:05	1.1.1.2.2.5
+++ string.c	1998/02/17 01:47:09
@@ -899,3 +899,3 @@
 	str_cat(result, RSTRING(repl)->ptr, RSTRING(repl)->len);
-	if (END(0) == offset) {
+	if (BEG(0) == END(0)) {
 	    /*
@@ -904,3 +904,3 @@
 	     */
-	    if (RSTRING(str)->len > 0) {
+	    if (RSTRING(str)->len > END(0)) {
 		str_cat(result, RSTRING(str)->ptr+END(0), 1);
--- regex.c	1998/01/21 08:07:46	1.1.1.2.2.1
+++ regex.c	1998/02/17 01:47:09
@@ -2420,3 +2420,3 @@
 	  && (bufp->can_be_null == 0 ||
-	      (bufp->can_be_null == 2 && size > 0
+	      (bufp->can_be_null && size > 0
 	       && string[startpos-1] == '\n')))