mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
cont.c: fiber local svar
* cont.c (cont_restore_thread): svar should be separate per fibers. [ruby-core:51331] [Bug #7678] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3df94d7b5d
commit
29707c1d73
3 changed files with 31 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
Wed Jan 30 13:17:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* cont.c (cont_restore_thread): svar should be separate per fibers.
|
||||
[ruby-core:51331] [Bug #7678]
|
||||
|
||||
Wed Jan 30 07:15:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
||||
|
||||
* re.c (reg_operand): Simplify and reuse error handling [Bug #7539]
|
||||
|
|
2
cont.c
2
cont.c
|
@ -512,6 +512,8 @@ cont_restore_thread(rb_context_t *cont)
|
|||
th->protect_tag = sth->protect_tag;
|
||||
th->errinfo = sth->errinfo;
|
||||
th->first_proc = sth->first_proc;
|
||||
th->root_lep = sth->root_lep;
|
||||
th->root_svar = sth->root_svar;
|
||||
}
|
||||
|
||||
#if FIBER_USE_NATIVE
|
||||
|
|
|
@ -317,5 +317,29 @@ class TestFiber < Test::Unit::TestCase
|
|||
size_large = invoke_rec script, vm_stack_size, 1024 * 1024 * 10
|
||||
assert_operator(size_default, :<=, size_large)
|
||||
end
|
||||
|
||||
def test_separate_lastmatch
|
||||
bug7678 = '[ruby-core:51331]'
|
||||
/a/ =~ "a"
|
||||
m1 = $~
|
||||
m2 = nil
|
||||
Fiber.new do
|
||||
/b/ =~ "b"
|
||||
m2 = $~
|
||||
end.resume
|
||||
assert_equal("b", m2[0])
|
||||
assert_equal(m1, $~, bug7678)
|
||||
end
|
||||
|
||||
def test_separate_lastline
|
||||
bug7678 = '[ruby-core:51331]'
|
||||
$_ = s1 = "outer"
|
||||
s2 = nil
|
||||
Fiber.new do
|
||||
s2 = "inner"
|
||||
end.resume
|
||||
assert_equal("inner", s2)
|
||||
assert_equal(s1, $_, bug7678)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue