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/