[#20036] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 2003/04/18
[#20045] Re: Roundoff problem with Float and Marshal — nobu.nakada@... 2003/04/20

なかだです。

[#20063] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto) 2003/04/22

まつもと ゆきひろです

[#20097] jcode.rb — akira yamada / やまだあきら <akira@...>

25 messages 2003/04/26
[#20098] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/27

まつもと ゆきひろです

[#20105] Re: jcode.rb — WATANABE Hirofumi <eban@...> 2003/04/28

わたなべです。

[#20108] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/28

まつもと ゆきひろです

[ruby-dev:19991] [1,2,3,4] * (1<<30)

From: Tadayoshi Funaba <tadf@...5.so-net.ne.jp>
Date: 2003-04-10 02:45:56 UTC
List: ruby-dev #19991
ふなばです。

# とりあえず、つぎのネタをふりたいと思います。

rb_ary_times ですけど、[1,2,3,4] * (1<<30) などの結果が、空の配列にな
ります。一応、現状の rb_str_times に倣って修正してみましたが、どうでしょ
う。


Index: array.c
===================================================================
RCS file: /src/ruby/array.c,v
retrieving revision 1.115
diff -u -r1.115 array.c
--- array.c	3 Apr 2003 05:24:57 -0000	1.115
+++ array.c	10 Apr 2003 02:41:43 -0000
@@ -1529,8 +1529,12 @@
     }
 
     len = NUM2LONG(times);
+    if (len == 0) return rb_ary_new2(0);
     if (len < 0) {
 	rb_raise(rb_eArgError, "negative argument");
+    }
+    if (LONG_MAX/len < RARRAY(ary)->len) {
+	rb_raise(rb_eArgError, "argument too big");
     }
     len *= RARRAY(ary)->len;
 

In This Thread

Prev Next