summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--gc.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index db4e49957c..dae6eb6492 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sun Mar 15 12:50:23 2009 Nobuyoshi Nakada <[email protected]>
+
+ * gc.c (run_final): frees zombies only. [ruby-dev:38171]
+
Sun Mar 15 04:19:19 2009 Nobuyoshi Nakada <[email protected]>
* gc.c (rb_gc_call_finalizer_at_exit): leave Thread objects
diff --git a/gc.c b/gc.c
index 972e9d7fee..7eb3a6fd81 100644
--- a/gc.c
+++ b/gc.c
@@ -1960,7 +1960,7 @@ run_final(obj)
objid = rb_obj_id(obj); /* make obj into id */
RBASIC(obj)->klass = 0;
rb_thread_critical = Qtrue;
- if (RDATA(obj)->dfree) {
+ if (BUILTIN_TYPE(obj) == T_ZOMBIE && RDATA(obj)->dfree) {
(*RDATA(obj)->dfree)(DATA_PTR(obj));
}
args[1] = 0;