From 3a0a3f4ea22b88286b835518d7ec5d2d5308f34a Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 2 May 2008 14:57:23 +0000 Subject: * variable.c (rb_define_hooked_variable): guard *var from GC to prevent collecting argf under RUBY_DEBUG=gc_stress. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- variable.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'variable.c') diff --git a/variable.c b/variable.c index 154f0872b0..a935c51d3a 100644 --- a/variable.c +++ b/variable.c @@ -455,13 +455,20 @@ rb_define_hooked_variable( 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 -- cgit v1.2.3