diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-01-05 03:50:04 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-01-05 03:50:04 +0000 |
commit | 23409989edec7b345dd23c289f1e0c4fe28fdc4f (patch) | |
tree | 422cd60b9bd66fffa802bc2608d90ee08ebbf9db /eval.c | |
parent | 525c8f80b28f38d2cc05fc745c41e27e9972e41f (diff) |
* 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/branches/ruby_1_8@7728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -11567,10 +11567,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); } |