ruby-changes:17671
From: mame <ko1@a...>
Date: Thu, 4 Nov 2010 02:08:34 +0900 (JST)
Subject: [ruby-changes:17671] Ruby:r29680 (trunk): * cont.c (rb_fiber_resume): raise an "double resume" error when root
mame 2010-11-04 02:08:25 +0900 (Thu, 04 Nov 2010) New Revision: 29680 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29680 Log: * cont.c (rb_fiber_resume): raise an "double resume" error when root fiber is going to be resumed. [ruby-dev:42523] Modified files: trunk/ChangeLog trunk/cont.c trunk/test/ruby/test_fiber.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 29679) +++ ChangeLog (revision 29680) @@ -1,3 +1,8 @@ +Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@t...> + + * cont.c (rb_fiber_resume): raise an "double resume" error when root + fiber is going to be resumed. [ruby-dev:42523] + Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@r...> * lib/ostruct.rb (OpenStruct#delete_field): also undefine Index: cont.c =================================================================== --- cont.c (revision 29679) +++ cont.c (revision 29680) @@ -1292,7 +1292,7 @@ rb_fiber_t *fib; GetFiberPtr(fibval, fib); - if (fib->prev != Qnil) { + if (fib->prev != Qnil || fib->cont.type == ROOT_FIBER_CONTEXT) { rb_raise(rb_eFiberError, "double resume"); } Index: test/ruby/test_fiber.rb =================================================================== --- test/ruby/test_fiber.rb (revision 29679) +++ test/ruby/test_fiber.rb (revision 29680) @@ -189,5 +189,13 @@ f1.transfer }, '[ruby-dev:40833]' end + + def test_resume_root_fiber + assert_raise(FiberError) do + Thread.new do + Fiber.current.resume + end.join + end + end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/