#790: Exception is not generated when calls Thread.stop with only one thread. ----------------------------------+----------------------------------------- Reporter: watson1...@… | Owner: lsansone...@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+-----------------------------------------
Comment(by watson1...@…): With the following patch, it would be fixed. :D {{{ #!diff diff --git a/thread.c b/thread.c index fe380ba..8a46dea 100644 --- a/thread.c +++ b/thread.c @@ -788,8 +788,8 @@ rb_thread_key_p(VALUE self, SEL sel, VALUE key) int rb_thread_alone() { - // TODO - return 0; + int num = RARRAY_LEN(rb_vm_threads()); + return num == 1; } /* diff --git a/vm.cpp b/vm.cpp index 1f6dc86..f5dbb54 100644 --- a/vm.cpp +++ b/vm.cpp @@ -4525,6 +4525,9 @@ rb_thread_sleep_forever() { rb_vm_thread_t *t = GET_THREAD(); + if(rb_thread_alone()) { + rb_raise(rb_eThreadError, "stopping only thread\n\tnote: use sleep to stop forever"); + } pre_wait(t); const int code = pthread_cond_wait(&t->sleep_cond, &t->sleep_mutex); assert(code == 0 || code == ETIMEDOUT); }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/790#comment:1> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel