summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--cont.c2
-rw-r--r--test/ruby/test_fiber.rb9
3 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8bec936b1..e296dea3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/cont.c b/cont.c
index 7d1392e7d..43237560c 100644
--- a/cont.c
+++ b/cont.c
@@ -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 bf56b2b6d..536d358dd 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