[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]