1
0
Fork 0
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:
nobu 2013-01-30 04:17:59 +00:00
parent 3df94d7b5d
commit 29707c1d73
3 changed files with 31 additions and 0 deletions

View file

@ -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
View file

@ -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

View file

@ -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