mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* cont.c (cont_restore_1): fix to check root fiber [ruby-dev:30911].
* test/ruby/test_fiber.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b60d64b001
commit
8620de6b04
3 changed files with 21 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
Thu Jun 7 12:48:33 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* cont.c (cont_restore_1): fix to check root fiber [ruby-dev:30911].
|
||||||
|
|
||||||
|
* test/ruby/test_fiber.rb: add a test.
|
||||||
|
|
||||||
Thu Jun 07 07:24:36 2007 NARUSE, Yui <naruse@ruby-lang.org>
|
Thu Jun 07 07:24:36 2007 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* lib/json/common.rb: Ponder offering parse! method.
|
* lib/json/common.rb: Ponder offering parse! method.
|
||||||
|
|
9
cont.c
9
cont.c
|
@ -173,11 +173,14 @@ cont_restore_1(rb_context_t *cont)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* continuation */
|
/* continuation */
|
||||||
th->fiber = sth->fiber;
|
VALUE fval;
|
||||||
|
|
||||||
if (th->fiber) {
|
th->fiber = sth->fiber;
|
||||||
|
fval = th->fiber ? th->fiber : th->root_fiber;
|
||||||
|
|
||||||
|
if (fval) {
|
||||||
rb_context_t *fcont;
|
rb_context_t *fcont;
|
||||||
GetContPtr(th->fiber, fcont);
|
GetContPtr(fval, fcont);
|
||||||
th->stack_size = fcont->saved_thread.stack_size;
|
th->stack_size = fcont->saved_thread.stack_size;
|
||||||
th->stack = fcont->saved_thread.stack;
|
th->stack = fcont->saved_thread.stack;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,15 @@ class TestFiber < Test::Unit::TestCase
|
||||||
f2 = Fiber.new do
|
f2 = Fiber.new do
|
||||||
c.call
|
c.call
|
||||||
end
|
end
|
||||||
assert_equal(f1.yield, :ok)
|
assert_equal(:ok, f1.yield)
|
||||||
|
|
||||||
|
assert_equal(:ok,
|
||||||
|
callcc {|c|
|
||||||
|
Fiber.new {
|
||||||
|
c.call :ok
|
||||||
|
}.yield
|
||||||
|
}
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue