diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-12-22 09:37:13 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-12-22 09:37:13 +0000 |
commit | 1c09bfad5c6dc798c53732095374ab27b7b0f59c (patch) | |
tree | 80188ebdcc7f50118a2c882d19d01d19c420417c /eval.c | |
parent | d0133e413db7a3b4ca7982f5c5548b47f68700ac (diff) |
* eval.c (rb_with_disable_interrupt): use ENABLE_INTS instead of
ALLOW_INTS which may switch context. [ruby-dev:22319]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -4733,14 +4733,18 @@ rb_with_disable_interrupt(proc, data) int status; DEFER_INTS; - RUBY_CRITICAL( + { + int thr_critical = rb_thread_critical; + + rb_thread_critical = Qtrue; PUSH_TAG(PROT_NONE); if ((status = EXEC_TAG()) == 0) { result = (*proc)(data); } POP_TAG(); - ); - ALLOW_INTS; + rb_thread_critical = thr_critical; + } + ENABLE_INTS; if (status) JUMP_TAG(status); return result; |