なかだです。

At Wed, 7 Sep 2005 11:40:23 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:26972]:
> なるほど、同意できます。空文字列だからといってtaintを外すの
> は止めにしましょう。

"x" * 0 が0除算でcoreを吐きます。

それと1.8のほうはどうしますか。


Index: string.c =================================================================== RCS file: /cvs/ruby/src/ruby/string.c,v retrieving revision 1.234 diff -U2 -p -r1.234 string.c --- string.c 8 Sep 2005 04:42:46 -0000 1.234 +++ string.c 8 Sep 2005 12:54:25 -0000 @@ -413,11 +413,11 @@ rb_str_times(str, times) rb_raise(rb_eArgError, "negative argument"); } - if (LONG_MAX/len < RSTRING(str)->len) { + if (len && LONG_MAX/len < RSTRING(str)->len) { rb_raise(rb_eArgError, "argument too big"); } - str2 = rb_str_new5(str,0, RSTRING(str)->len*len); - for (i=0; i<len; i++) { - memcpy(RSTRING(str2)->ptr+(i*RSTRING(str)->len), + str2 = rb_str_new5(str,0, len *= RSTRING(str)->len); + for (i = 0; i < len; i += RSTRING(str)->len) { + memcpy(RSTRING(str2)->ptr + i, RSTRING(str)->ptr, RSTRING(str)->len); }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦