From: _ wanabe Date: 2010-08-12T18:31:46+09:00 Subject: [ruby-dev:42018] [Bug #3136] reuse of singleton method definition causes SEGV チケット #3136 が更新されました。 (by _ wanabe) ワナベと申します。 解決方法 1. はきつそうだったので、2. の方向で試してみました。 これで本チケットおよび 2502 は発症しなくなりました。 複製することによる副作用に思い当たらないので、 反対がなければコミットしてしまおうと思っています。 diff --git a/vm.c b/vm.c index e62c9a4..a381d3c 100644 --- a/vm.c +++ b/vm.c @@ -1844,6 +1844,11 @@ vm_define_method(rb_thread_t *th, VALUE obj, ID id, VALUE iseqval, rb_iseq_t *miseq; GetISeqPtr(iseqval, miseq); + if (miseq->klass) { + iseqval = rb_iseq_clone(iseqval, 0); + GetISeqPtr(iseqval, miseq); + } + if (NIL_P(klass)) { rb_raise(rb_eTypeError, "no class/module to add method"); } ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3136 ---------------------------------------- http://redmine.ruby-lang.org