summaryrefslogtreecommitdiff
path: root/test/-ext-
diff options
context:
space:
mode:
authorktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-12 03:04:42 +0000
committerktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-12 03:04:42 +0000
commit9564e9bd235c2c0b2bccda1849bba9c40b508c3e (patch)
tree054f6ccdd592b55a9161c1897e095eabf2de5047 /test/-ext-
parent00468f21099d329de7a6665928f293f80632400f (diff)
* vm.c (invoke_block_from_c): fix unintentional block passing.
[ruby-dev:45071] [Bug #5832] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/-ext-')
-rw-r--r--test/-ext-/test_bug-5832.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/-ext-/test_bug-5832.rb b/test/-ext-/test_bug-5832.rb
new file mode 100644
index 00000000000..11f8a52a95c
--- /dev/null
+++ b/test/-ext-/test_bug-5832.rb
@@ -0,0 +1,21 @@
+require '-test-/bug-5832/bug'
+
+class Test_BUG_5832 < Test::Unit::TestCase
+ def test_block_passing
+ bug5832 = '[ruby-dev:45071]'
+
+ c = Class.new do
+ define_method(:call_invoke_block_from_c) do
+ Bug.funcall_callback(self)
+ end
+
+ def callback
+ yield if block_given?
+ end
+ end
+
+ assert_nothing_raised(RuntimeError, bug5832) do
+ c.new.call_invoke_block_from_c { raise 'unreachable' }
+ end
+ end
+end