From e02b469de182c1d87ead38fa82630eaaee75c379 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 24 Jul 2003 05:18:47 +0000 Subject: * eval.c (thgroup_add): no warning for terminated threads. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- gc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index b1afbb1db7..cefe86fa4a 100644 --- a/gc.c +++ b/gc.c @@ -1536,20 +1536,26 @@ run_final(obj) int status, critical_save; VALUE args[2], table; - critical_save = rb_thread_critical; - rb_thread_critical = Qtrue; args[1] = rb_ary_new3(1, rb_obj_id(obj)); /* make obj into id */ for (i=0; ilen; i++) { args[0] = RARRAY(finalizers)->ptr[i]; + critical_save = rb_thread_critical; + rb_thread_critical = Qtrue; rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status); + rb_thread_critical = critical_save; + CHECK_INTS; } + CHECK_INTS; if (finalizer_table && st_delete(finalizer_table, &obj, &table)) { for (i=0; ilen; i++) { args[0] = RARRAY(table)->ptr[i]; + critical_save = rb_thread_critical; + rb_thread_critical = Qtrue; rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status); + rb_thread_critical = critical_save; + CHECK_INTS; } } - rb_thread_critical = critical_save; } void -- cgit v1.2.3