summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-23 07:52:38 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-23 07:52:38 +0000
commitca14017bb65ee6316bfd400ac3efd6abe3ab70ed (patch)
tree2fa3966a581fc9b57e35af22e41cbc04362be7bc /eval.c
parenta32c01d85a5adb0fa4357db00eb98be5ad2240a6 (diff)
* gc.c (define_final): should not disclose NODE* to Ruby world.
[ruby-dev:23957] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 57c5752eb0..eebe1a2c61 100644
--- a/eval.c
+++ b/eval.c
@@ -10971,10 +10971,13 @@ rb_thread_sleep(sec)
void
rb_thread_sleep_forever()
{
+ int thr_critical = rb_thread_critical;
if (curr_thread == curr_thread->next ||
curr_thread->status == THREAD_TO_KILL) {
+ rb_thread_critical = Qtrue;
TRAP_BEG;
pause();
+ rb_thread_critical = thr_critical;
TRAP_END;
return;
}