diff options
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -1519,10 +1519,11 @@ run_final(obj) VALUE obj; { long i; - int status; + int status, critical_save; VALUE args[2], table; - DEFER_INTS; + 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; i<RARRAY(finalizers)->len; i++) { args[0] = RARRAY(finalizers)->ptr[i]; @@ -1534,7 +1535,7 @@ run_final(obj) rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status); } } - ENABLE_INTS; + rb_thread_critical = critical_save; } void |