From: matz@... (Yukihiro Matsumoto) Date: 1998-10-09T13:16:12+09:00 Subject: [ruby-list:9926] Re: range (Re: item insertion in an array) まつもと ゆきひろです In message "[ruby-list:9923] Re: range (Re: item insertion in an array)" on 98/10/09, WATANABE Hirofumi writes: |わたなべです. |:たまたまですね.範囲の終端の方が小さいので,長さ0と同じ扱い |:になったんですね.でも,これはエラーにすべきなのかしらん. | |range の話になるとまた別なんだけど, |エラーにするか |10..1 みたいな逆順をサポートするか |でしょうね. 今ソースを確認してみました.もともとエラーにするつもりでチェッ クが甘かっただけのようです.情けなし. パッチです.結構大規模になってしまった. --- array.c 1998/08/14 03:56:17 1.1.1.2.2.29 +++ array.c 1998/10/09 04:13:03 @@ -372,9 +372,7 @@ int beg, end; + int b, e; if (!range_beg_end(range, &beg, &end)) return FALSE; + b = beg; e = end; - if ((beg > 0 && end > 0 || beg < 0 && end < 0) && beg > end) { - IndexError("end smaller than beg [%d..%d]", beg, end); - } - if (beg < 0) { @@ -383,7 +381,2 @@ } - *begp = beg; - if (beg > len) { - *lenp = 0; - } - else { if (end < 0) { @@ -393,2 +386,7 @@ if (beg > end) { + IndexError("end smaller than beg [%d..%d]", b, e); + } + + *begp = beg; + if (beg > len) { *lenp = 0; @@ -397,3 +395,2 @@ *lenp = end - beg +1; - } }