summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-21 08:48:05 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-21 08:48:05 +0000
commit062351e6bb492d206c305840f4a69c70efcb5131 (patch)
tree7573699c85deee5831cc5538b2f53ce47ed91011 /gc.c
parent564c80b10a116c49ac0dbcfe620e3f776c0d3845 (diff)
* error.c (syserr_initialize): prohibit specifying errno for
subclasses of SystemCallError. in addition, if initialize is called for SystenCallError instance, its class be changed. [ruby-dev:20257] * gc.c (run_final): to protect thread context switch, finalizers are wrapped in DEFER_INTS/ENABLE_INTS. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index 8a71ece020..8fe85689fa 100644
--- a/gc.c
+++ b/gc.c
@@ -1522,6 +1522,7 @@ run_final(obj)
int status;
VALUE args[2], table;
+ DEFER_INTS;
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];
@@ -1533,6 +1534,7 @@ run_final(obj)
rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);
}
}
+ ENABLE_INTS;
}
void