* 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
This commit is contained in:
parent
00468f2109
commit
9564e9bd23
@ -1,3 +1,8 @@
|
||||
Sun Aug 12 11:57:20 2012 Kazuki Tsujimoto <kazuki@callcc.net>
|
||||
|
||||
* vm.c (invoke_block_from_c): fix unintentional block passing.
|
||||
[ruby-dev:45071] [Bug #5832]
|
||||
|
||||
Fri Aug 10 08:41:28 2012 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* gc.c (gc_malloc_allocated_size): RDoc does not process macros, so
|
||||
|
14
ext/-test-/bug-5832/bug.c
Normal file
14
ext/-test-/bug-5832/bug.c
Normal file
@ -0,0 +1,14 @@
|
||||
#include <ruby.h>
|
||||
|
||||
static VALUE
|
||||
bug_funcall_callback(VALUE self, VALUE obj)
|
||||
{
|
||||
return rb_funcall(obj, rb_intern("callback"), 0);
|
||||
}
|
||||
|
||||
void
|
||||
Init_bug(void)
|
||||
{
|
||||
VALUE mBug = rb_define_module("Bug");
|
||||
rb_define_module_function(mBug, "funcall_callback", bug_funcall_callback, 1);
|
||||
}
|
1
ext/-test-/bug-5832/extconf.rb
Normal file
1
ext/-test-/bug-5832/extconf.rb
Normal file
@ -0,0 +1 @@
|
||||
create_makefile("-test-/bug-5832/bug")
|
21
test/-ext-/test_bug-5832.rb
Normal file
21
test/-ext-/test_bug-5832.rb
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user