diff options
author | samuel <samuel@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-28 13:03:14 +0000 |
---|---|---|
committer | samuel <samuel@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-28 13:03:14 +0000 |
commit | 9ee79b658123a2a4af65c80484d1f91ce73354e2 (patch) | |
tree | a562204102848b8c6ede78ff9bd90876a8af4e21 /cont.c | |
parent | 5fb9d1e11fc50df359a1f9d2537a11f13cdb6d33 (diff) | |
download | ruby-9ee79b658123a2a4af65c80484d1f91ce73354e2.tar.gz |
Don't allow rb_fiber_resume to raise exception on unborn fiber.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'cont.c')
-rw-r--r-- | cont.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -1896,9 +1896,14 @@ rb_fiber_resume(VALUE fibval, int argc, const VALUE *argv) { rb_fiber_t *fib = fiber_ptr(fibval); + if (argc == -1 && FIBER_CREATED_P(fib)) { + rb_raise(rb_eFiberError, "cannot raise exception on unborn fiber"); + } + if (fib->prev != 0 || fiber_is_root_p(fib)) { rb_raise(rb_eFiberError, "double resume"); } + if (fib->transferred != 0) { rb_raise(rb_eFiberError, "cannot resume transferred Fiber"); } |