From: Tadayoshi Funaba Date: 2003-04-10T11:45:56+09:00 Subject: [ruby-dev:19991] [1,2,3,4] * (1<<30) ふなばです。 # とりあえず、つぎのネタをふりたいと思います。 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;