* 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
This commit is contained in:
parent
f099a94afa
commit
3a0a3f4ea2
@ -1,3 +1,8 @@
|
|||||||
|
Fri May 2 23:55:15 2008 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* 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@ruby-lang.org>
|
Fri May 2 17:29:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* range.c (range_step): call to_int if step is not a numeric
|
* range.c (range_step): call to_int if step is not a numeric
|
||||||
|
@ -455,13 +455,20 @@ rb_define_hooked_variable(
|
|||||||
void (*setter)(ANYARGS))
|
void (*setter)(ANYARGS))
|
||||||
{
|
{
|
||||||
struct global_variable *gvar;
|
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 = rb_global_entry(id)->var;
|
||||||
gvar->data = (void*)var;
|
gvar->data = (void*)var;
|
||||||
gvar->getter = getter?getter:var_getter;
|
gvar->getter = getter?getter:var_getter;
|
||||||
gvar->setter = setter?setter:var_setter;
|
gvar->setter = setter?setter:var_setter;
|
||||||
gvar->marker = var_marker;
|
gvar->marker = var_marker;
|
||||||
|
|
||||||
|
RB_GC_GUARD(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user