まつもと ゆきひろです.

In message "[ruby-list:2209] Re: [BUG] split(" ", limit)"
    on 97/02/19, WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp> writes:
|わたなべです.
|
|何度も何度もすいません.

いえいえ,パッチ合戦ですね.

|ary_push の問題より beg が修正されないのが大元の原因でした.
|("a,b,b:c" のような結果になる). だから
|
|  i = 1
|  beg はチェックの前
|
|でよさそうです.

私はこういう感じの修正をしてみました.どうもちゃんと動いてい
るようです.

--- string.c.orig	Wed Feb 19 01:32:28 1997
+++ string.c	Wed Feb 19 16:58:53 1997
@@ -1631,2 +1631,4 @@
 	lim = NUM2INT(limit);
+	if (lim == 0) limit = Qnil;
+	else if (lim == 1) return ary_new3(1, str);
 	i = 1;
@@ -1682,3 +1684,3 @@
 			ary_push(result, str_substr(str, beg, end-beg));
-			if (!NIL_P(limit) && lim <= ++i) break;
+			if (!NIL_P(limit) && lim <= i++) break;
 			skip = 1;
@@ -1696,3 +1698,3 @@
 		    ary_push(result, str_substr(str, beg, end-beg));
-		    if (!NIL_P(limit) && lim <= ++i) break;
+		    if (!NIL_P(limit) && lim <= i++) break;
 		    beg = end + 1;