diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | cont.c | 2 | ||||
-rw-r--r-- | test/ruby/test_fiber.rb | 9 |
3 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Fri Feb 13 15:01:40 2009 Koichi Sasada <ko1@atdot.net> + + * cont.c (rb_fiber_alive_p): fix to return true instead of 1. + [ruby-dev:37991] + + * test/ruby/test_fiber.rb: add a test for Fiber#alive? + Fri Feb 13 09:43:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * configure.in (ac_cv_func_flock): using flock defined in @@ -933,7 +933,7 @@ rb_fiber_alive_p(VALUE fibval) { rb_fiber_t *fib; GetFiberPtr(fibval, fib); - return fib->status != TERMINATED; + return fib->status != TERMINATED ? Qtrue : Qfalse; } /* diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index bf56b2b6d2..536d358dd0 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -164,5 +164,14 @@ class TestFiber < Test::Unit::TestCase assert_equal(nil, Thread.current[:v]); fb.resume assert_equal(nil, Thread.current[:v]); end + + def test_alive + fib = Fiber.new{Fiber.yield} + assert_equal(true, fib.alive?) + fib.resume + assert_equal(true, fib.alive?) + fib.resume + assert_equal(false, fib.alive?) + end end |