From 5e51e94304a30446108752829639247da23873ca Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 5 Jan 2005 03:50:04 +0000 Subject: * eval.c (rb_thread_initialize): Thread objects cannot be initialized again. fixed: [ruby-core:04067] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index b4e3ea96b7..7884297c32 100644 --- a/eval.c +++ b/eval.c @@ -11698,10 +11698,21 @@ static VALUE rb_thread_initialize(thread, args) VALUE thread, args; { + rb_thread_t th; + if (!rb_block_given_p()) { rb_raise(rb_eThreadError, "must be called with a block"); } - return rb_thread_start_0(rb_thread_yield, args, rb_thread_check(thread)); + th = rb_thread_check(thread); + if (th->stk_max) { + NODE *node = th->node; + if (!node) { + rb_raise(rb_eThreadError, "already initialized thread"); + } + rb_raise(rb_eThreadError, "already initialized thread - %s:%d", + node->nd_file, nd_line(node)); + } + return rb_thread_start_0(rb_thread_yield, args, th); } -- cgit v1.2.3