yarv-diff:215
From: ko1 atdot.net
Date: 9 Feb 2006 16:12:42 -0000
Subject: [yarv-diff:215] r373 - trunk
Author: matz
Date: 2006-02-10 01:12:41 +0900 (Fri, 10 Feb 2006)
New Revision: 373
Modified:
trunk/ChangeLog
trunk/gc.c
Log:
* gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
invoking finalizers.
* gc.c (rb_gc_finalize_deferred): ditto.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-02-08 14:18:05 UTC (rev 372)
+++ trunk/ChangeLog 2006-02-09 16:12:41 UTC (rev 373)
@@ -4,6 +4,14 @@
# from Mon, 03 May 2004 01:24:19 +0900
#
+2006-02-10(Fri) 01:04:58 +0900 Yukihiro Matsumoto <matz ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
+ invoking finalizers.
+
+ * gc.c (rb_gc_finalize_deferred): ditto.
+
+
2006-02-08(Wed) 23:17:44 +0900 Minero Aoki <aamine loveruby.net>
* test/ruby/test_proc.rb: method names were wrongly duplicated.
Modified: trunk/gc.c
===================================================================
--- trunk/gc.c 2006-02-08 14:18:05 UTC (rev 372)
+++ trunk/gc.c 2006-02-09 16:12:41 UTC (rev 373)
@@ -1782,11 +1782,13 @@
{
RVALUE *p = deferred_final_list;
+ during_gc++;
deferred_final_list = 0;
if (p) {
finalize_list(p);
}
free_unused_heaps();
+ during_gc = 0;
}
void
@@ -1795,6 +1797,8 @@
RVALUE *p, *pend;
int i;
+ /* finalizers are part of garbage collection */
+ during_gc++;
/* run finalizers */
if (need_call_final) {
p = deferred_final_list;
@@ -1835,6 +1839,7 @@
p++;
}
}
+ during_gc = 0;
}
/*
--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml