[#20392] [BigDecimal] proposal to change specification — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤と申します。

25 messages 2003/06/20
[#20407] Re: [BigDecimal] proposal to change specification — "Shigeo Kobayashi" <shigeo@...> 2003/06/22

小林です。

[#20447] [BigDecimal] renaming proposal — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

47 messages 2003/06/24
[#20621] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林@MAILチェック中です。

[#20628] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林です。

[ruby-dev:20370] [PATCH] 1.8 range.c: [][0..-1] => []

From: "NAKAMURA, Hiroshi" <nakahiro@...>
Date: 2003-06-19 01:06:44 UTC
List: ruby-dev #20370
なひです。

先日、

$ ruby18 -ve 'p ""[0..-1], [][0..-1]'
ruby 1.8.0 (2003-06-16) [i386-cygwin]
nil
nil
$ ruby -ve 'p ""[0..-1], [][0..-1]'
ruby 1.6.8 (2003-05-20) [i386-cygwin]
""
[]

というのを見つけて、仕様変更かもなぁとも思ったんですが、
もしかしたら意図してないかもと思って見てみました。

以下のpatchで1.6と同じ挙動になりそうなんですが、どうでしょう。
endのチェックを、EXCLによる調整の後に回してあります。
せっかく綺麗にしたところですが。。。

「最後の文字のうしろ」として-0が使えたり(無理)、負の数の
表す位置を一つずつずらしたりすると(同)、もう少しすっきり書けそう。

Index: range.c
===================================================================
RCS file: /src/ruby/range.c,v
retrieving revision 1.59
diff -u -9 -p -r1.59 range.c
--- range.c	7 Jun 2003 15:33:41 -0000	1.59
+++ range.c	19 Jun 2003 00:51:47 -0000
@@ -371,25 +371,21 @@ rb_range_beg_len(range, begp, lenp, len,
     if (beg < 0) {
 	beg += len;
 	if (beg < 0) goto out_of_range;
     }
     if (err == 0 || err == 2) {
 	if (beg > len) goto out_of_range;
 	if (end > len)
 	    end = len;
     }
-    if (end < 0) {
-	end += len;
-	if (end < 0) {
-	    goto out_of_range;
-	}
-    }
+    if (end < 0) end += len;
     if (!EXCL(range)) end++;	/* include end point */
+    if (end < 0) goto out_of_range;
     len = end - beg;
     if (len < 0) goto out_of_range;
 
   length_set:
     *begp = beg;
     *lenp = len;
     return Qtrue;
 
   out_of_range:


In This Thread

Prev Next