From: nobu@... Date: 2004-09-29T10:42:15+09:00 Subject: [ruby-dev:24369] Re: Enumerable#sort_by dumps core なかだです。 At Wed, 29 Sep 2004 00:06:45 +0900, Tanaka Akira wrote in [ruby-dev:24368]: > 次のようにすると core を吐きます。 > > % ./ruby -e ' > 1.upto(100) {|n| > arr = (1..100).map {|i| i.to_s } > class << (arr[n]); self end.send(:define_method, :<=>) {|o| > ObjectSpace.each_object(Array) {|a| > next unless a.include? o > next if a.length != 2 > a.replace [a[0]] > } > super o > } > begin > arr.sort_by {|v| v } > rescue NotImplementedError > end > } > ' それを変えられちゃまずいでしょう。 Index: enum.c =================================================================== RCS file: /cvs/ruby/src/ruby/enum.c,v retrieving revision 1.48 diff -u -2 -p -r1.48 enum.c --- enum.c 21 Sep 2004 03:08:32 -0000 1.48 +++ enum.c 29 Sep 2004 01:37:18 -0000 @@ -394,4 +394,5 @@ sort_by_i(i, ary) v = rb_yield(i); e = rb_assoc_new(v, i); + OBJ_FREEZE(e); rb_ary_push(ary, e); return Qnil; -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦