ruby-changes:17065
From: wanabe <ko1@a...>
Date: Sat, 21 Aug 2010 19:02:09 +0900 (JST)
Subject: [ruby-changes:17065] Ruby:r29063 (trunk): * vm.c (vm_define_method): copy iseq to avoid overwriting iseq->klass.
wanabe 2010-08-21 19:00:55 +0900 (Sat, 21 Aug 2010) New Revision: 29063 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29063 Log: * vm.c (vm_define_method): copy iseq to avoid overwriting iseq->klass. #2502, #3136. see #2420. Modified files: trunk/ChangeLog trunk/vm.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29062) +++ ChangeLog (revision 29063) @@ -1,3 +1,8 @@ +Sat Aug 21 18:54:56 2010 wanabe <s.wanabe@g...> + + * vm.c (vm_define_method): copy iseq to avoid overwriting iseq->klass. + #2502, #3136. see #2420. + Sat Aug 21 17:36:42 2010 Tanaka Akira <akr@f...> * ext/pathname/pathname.c (path_split): Pathname#split translated from Index: vm.c =================================================================== --- vm.c (revision 29062) +++ vm.c (revision 29063) @@ -1844,6 +1844,11 @@ 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"); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/