pvalena / rpms / ruby

Forked from rpms/ruby 6 years ago
Clone
2061c5b
diff -pruN ruby-1.8.6-p230.orig/class.c ruby-1.8.6-p230/class.c
2061c5b
--- ruby-1.8.6-p230.orig/class.c	2008-06-15 21:06:33.000000000 +0900
2061c5b
+++ ruby-1.8.6-p230/class.c	2008-06-30 11:21:41.000000000 +0900
2061c5b
@@ -62,10 +62,7 @@ clone_method(mid, body, data)
2061c5b
     NODE *fbody = body->nd_body;
2061c5b
 
2061c5b
     if (fbody && nd_type(fbody) == NODE_SCOPE) {
2061c5b
-	VALUE cref = data->klass ?
2061c5b
-	    (VALUE)NEW_NODE(NODE_CREF,data->klass,0,fbody->nd_rval) :
2061c5b
-	    fbody->nd_rval;
2061c5b
-	fbody = NEW_NODE(NODE_SCOPE, fbody->nd_tbl, cref, fbody->nd_next);
2061c5b
+	fbody = rb_copy_node_scope(fbody, ruby_cref);
2061c5b
     }
2061c5b
     st_insert(data->tbl, mid, (st_data_t)NEW_METHOD(fbody, body->nd_noex));
2061c5b
     return ST_CONTINUE;
2061c5b
diff -pruN ruby-1.8.6-p230.orig/eval.c ruby-1.8.6-p230/eval.c
2061c5b
--- ruby-1.8.6-p230.orig/eval.c	2008-06-16 15:43:48.000000000 +0900
2061c5b
+++ ruby-1.8.6-p230/eval.c	2008-06-30 11:19:15.000000000 +0900
2061c5b
@@ -2239,8 +2239,8 @@ rb_mod_alias_method(mod, newname, oldnam
2061c5b
     return mod;
2061c5b
 }
2061c5b
 
2061c5b
-static NODE*
2061c5b
-copy_node_scope(node, rval)
2061c5b
+NODE*
2061c5b
+rb_copy_node_scope(node, rval)
2061c5b
     NODE *node;
2061c5b
     NODE *rval;
2061c5b
 {
2061c5b
@@ -3948,7 +3948,7 @@ rb_eval(self, n)
2061c5b
 		noex |= NOEX_NOSUPER;
2061c5b
 	    }
2061c5b
 
2061c5b
-	    defn = copy_node_scope(node->nd_defn, ruby_cref);
2061c5b
+	    defn = rb_copy_node_scope(node->nd_defn, ruby_cref);
2061c5b
 	    rb_add_method(ruby_class, node->nd_mid, defn, noex);
2061c5b
 	    if (scope_vmode == SCOPE_MODFUNC) {
2061c5b
 		rb_add_method(rb_singleton_class(ruby_class),
2061c5b
@@ -3984,7 +3984,7 @@ rb_eval(self, n)
2061c5b
 		    rb_warning("redefine %s", rb_id2name(node->nd_mid));
2061c5b
 		}
2061c5b
 	    }
2061c5b
-	    defn = copy_node_scope(node->nd_defn, ruby_cref);
2061c5b
+	    defn = rb_copy_node_scope(node->nd_defn, ruby_cref);
2061c5b
 	    rb_add_method(klass, node->nd_mid, defn,
2061c5b
 			  NOEX_PUBLIC|(body?body->nd_noex&NOEX_UNDEF:0));
2061c5b
 	    result = Qnil;
2061c5b
diff -pruN ruby-1.8.6-p230.orig/node.h ruby-1.8.6-p230/node.h
2061c5b
--- ruby-1.8.6-p230.orig/node.h	2007-05-23 00:01:22.000000000 +0900
2061c5b
+++ ruby-1.8.6-p230/node.h	2008-06-30 11:20:06.000000000 +0900
2061c5b
@@ -371,6 +371,7 @@ typedef unsigned int rb_event_t;
2061c5b
 #define RUBY_EVENT_ALL      0xff
2061c5b
 
2061c5b
 typedef void (*rb_event_hook_func_t) _((rb_event_t,NODE*,VALUE,ID,VALUE));
2061c5b
+NODE *rb_copy_node_scope _((NODE *, NODE *));
2061c5b
 void rb_add_event_hook _((rb_event_hook_func_t,rb_event_t));
2061c5b
 int rb_remove_event_hook _((rb_event_hook_func_t));
2061c5b