summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-02-13 09:11:11 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-02-13 09:11:11 +0000
commit937092b8203c373c919a6f307f91e17d4bec5bb1 (patch)
tree07a130b71a37018a9ffaf3f970f42d4348db3a78 /eval.c
parent050f2d84603bd9b3761f1e498f81ce74719caeea (diff)
* range.c (range_step): step might be float 0 < x < 1.
* eval.c (rb_thread_schedule): pause if no runnable thread when there's only one thread. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index bfd0267126..56e9db8170 100644
--- a/eval.c
+++ b/eval.c
@@ -8211,6 +8211,11 @@ rb_thread_schedule()
if (!next) {
/* raise fatal error to main thread */
curr_thread->node = ruby_current_node;
+ if (curr->next == curr) {
+ TRAP_BEG;
+ pause();
+ TRAP_END;
+ }
FOREACH_THREAD_FROM(curr, th) {
fprintf(stderr, "deadlock 0x%lx: %s:",
th->thread, thread_status_name(th->status));