ruby-changes:6968
From: matz <ko1@a...>
Date: Mon, 11 Aug 2008 14:45:55 +0900 (JST)
Subject: [ruby-changes:6968] Ruby:r18485 (ruby_1_8): * class.c (clone_method): should copy cbase in cref as well.
matz 2008-08-11 14:42:31 +0900 (Mon, 11 Aug 2008) New Revision: 18485 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18485 Log: * class.c (clone_method): should copy cbase in cref as well. [ruby-dev:35116] * node.h (NEW_CREF): new NEW_ macro. * eval.c (PUSH_CREF): use NEW_CREF(). Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/class.c branches/ruby_1_8/eval.c branches/ruby_1_8/node.h Index: ruby_1_8/class.c =================================================================== --- ruby_1_8/class.c (revision 18484) +++ ruby_1_8/class.c (revision 18485) @@ -62,7 +62,10 @@ NODE *fbody = body->nd_body; if (fbody && nd_type(fbody) == NODE_SCOPE) { - fbody = rb_copy_node_scope(fbody, ruby_cref); + NODE *cref = (NODE*)fbody->nd_rval; + + if (cref) cref = cref->nd_next; + fbody = rb_copy_node_scope(fbody, NEW_CREF(data->klass, cref)); } st_insert(data->tbl, mid, (st_data_t)NEW_METHOD(fbody, body->nd_noex)); return ST_CONTINUE; Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 18484) +++ ruby_1_8/ChangeLog (revision 18485) @@ -1,3 +1,12 @@ +Mon Aug 11 14:39:46 2008 Yukihiro Matsumoto <matz@r...> + + * class.c (clone_method): should copy cbase in cref as well. + [ruby-dev:35116] + + * node.h (NEW_CREF): new NEW_ macro. + + * eval.c (PUSH_CREF): use NEW_CREF(). + Sun Aug 10 12:29:18 2008 Nobuyoshi Nakada <nobu@r...> * config.{guess,sub}: updated to automake-1.10.1. Index: ruby_1_8/eval.c =================================================================== --- ruby_1_8/eval.c (revision 18484) +++ ruby_1_8/eval.c (revision 18485) @@ -1065,7 +1065,7 @@ NODE *ruby_cref = 0; NODE *ruby_top_cref; -#define PUSH_CREF(c) ruby_cref = NEW_NODE(NODE_CREF,(c),0,ruby_cref) +#define PUSH_CREF(c) ruby_cref = NEW_CREF(c,ruby_cref) #define POP_CREF() ruby_cref = ruby_cref->nd_next #define PUSH_SCOPE() do { \ Index: ruby_1_8/node.h =================================================================== --- ruby_1_8/node.h (revision 18484) +++ ruby_1_8/node.h (revision 18485) @@ -319,7 +319,7 @@ #define NEW_MODULE(n,b) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(b),0) #define NEW_COLON2(c,i) NEW_NODE(NODE_COLON2,c,i,0) #define NEW_COLON3(i) NEW_NODE(NODE_COLON3,0,i,0) -#define NEW_CREF(c) (NEW_NODE(NODE_CREF,0,0,c)) +#define NEW_CREF(c,n) NEW_NODE(NODE_CREF,c,0,n) #define NEW_DOT2(b,e) NEW_NODE(NODE_DOT2,b,e,0) #define NEW_DOT3(b,e) NEW_NODE(NODE_DOT3,b,e,0) #define NEW_ATTRSET(a) NEW_NODE(NODE_ATTRSET,a,0,0) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/