summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-05 15:55:41 +0000
committerktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-05 15:55:41 +0000
commitca016c705fbe58d254daaaacc123a70c78caadcb (patch)
treeb8cb9aecb3d1670c0053d976ce92fb086f488051 /test
parent81f9052c11ea4ae1aa0323c1727a1aa91e7d9161 (diff)
* vm.c (rb_vm_stack_to_heap): call rb_vm_get_binding_creatable_next_cfp
instead of rb_vm_get_ruby_level_next_cfp to prevent a segfault by calling Kernel#callcc. See r39067 for more details. [ruby-dev:46908] [ruby-trunk - Bug #7774] * test/ruby/test_settracefunc.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_settracefunc.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb
index cfb06010ef..b4143c602c 100644
--- a/test/ruby/test_settracefunc.rb
+++ b/test/ruby/test_settracefunc.rb
@@ -943,7 +943,8 @@ class TestSetTraceFunc < Test::Unit::TestCase
end
def test_trace_point_binding_in_ifunc
- assert_normal_exit %q{
+ bug7774 = '[ruby-dev:46908]'
+ src = %q{
tp = TracePoint.new(:raise) do |tp|
tp.binding
end
@@ -955,8 +956,18 @@ class TestSetTraceFunc < Test::Unit::TestCase
yield 1
end
end
- obj.zip({}) {}
+ %s
end
- }, '[ruby-dev:46908] [ruby-trunk - Bug #7774]'
+ }
+ assert_normal_exit src % %q{obj.zip({}) {}}, bug7774
+ assert_normal_exit src % %q{
+ require 'continuation'
+ begin
+ c = nil
+ obj.sort_by {|x| callcc {|c2| c ||= c2 }; x }
+ c.call
+ rescue RuntimeError
+ end
+ }, bug7774
end
end