ruby-changes:4778
From: ko1@a...
Date: Fri, 2 May 2008 23:57:55 +0900 (JST)
Subject: [ruby-changes:4778] akr - Ruby:r16272 (trunk): * variable.c (rb_define_hooked_variable): guard *var from GC to
akr 2008-05-02 23:57:23 +0900 (Fri, 02 May 2008) New Revision: 16272 Modified files: trunk/ChangeLog trunk/variable.c Log: * variable.c (rb_define_hooked_variable): guard *var from GC to prevent collecting argf under RUBY_DEBUG=gc_stress. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/variable.c?r1=16272&r2=16271&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16272&r2=16271&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16271) +++ ChangeLog (revision 16272) @@ -1,3 +1,8 @@ +Fri May 2 23:55:15 2008 Tanaka Akira <akr@f...> + + * variable.c (rb_define_hooked_variable): guard *var from GC to + prevent collecting argf under RUBY_DEBUG=gc_stress. + Fri May 2 17:29:59 2008 Yukihiro Matsumoto <matz@r...> * range.c (range_step): call to_int if step is not a numeric Index: variable.c =================================================================== --- variable.c (revision 16271) +++ variable.c (revision 16272) @@ -455,13 +455,20 @@ void (*setter)(ANYARGS)) { struct global_variable *gvar; - ID id = global_id(name); + ID id; + VALUE tmp; + + if (var) + tmp = *var; + id = global_id(name); gvar = rb_global_entry(id)->var; gvar->data = (void*)var; gvar->getter = getter?getter:var_getter; gvar->setter = setter?setter:var_setter; gvar->marker = var_marker; + + RB_GC_GUARD(tmp); } void -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/