* vm_eval.c (send_internal): PASS_PASSED_BLOCK_TH must be placed

just before calling rb_call0.

* bootstraptest/test_flow.rb: add a test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ktsj 2011-12-23 16:23:13 +00:00
Родитель c6cbbd6eea
Коммит dd834c683d
3 изменённых файлов: 21 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,10 @@
Sat Dec 24 01:20:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
* vm_eval.c (send_internal): PASS_PASSED_BLOCK_TH must be placed
just before calling rb_call0.
* bootstraptest/test_flow.rb: add a test for above.
Sat Dec 24 00:55:16 2011 Tanaka Akira <akr@fsij.org>
* lib/tempfile.rb (Tempfile#initialize): warn if a block is given.

Просмотреть файл

@ -549,3 +549,16 @@ assert_equal %Q{ENSURE\n}, %q{
assert_equal "false", src + %q{e.all? {false}}, bug
assert_equal "true", src + %q{e.include?(:foo)}, bug
end
assert_equal %q{ok}, %q{
$x = :ok
o = Object.new
def o.inspect(*args)
yield if block_given?
super
end
begin
nil.public_send(o) {$x = :ng}
rescue
end
$x
}

Просмотреть файл

@ -712,7 +712,6 @@ send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope)
}
vid = *argv++; argc--;
PASS_PASSED_BLOCK_TH(th);
id = rb_check_id(&vid);
if (!id) {
@ -723,6 +722,7 @@ send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope)
}
id = rb_to_id(vid);
}
PASS_PASSED_BLOCK_TH(th);
return rb_call0(recv, id, argc, argv, scope, self);
}