зеркало из https://github.com/github/ruby.git
* 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:
Родитель
c6cbbd6eea
Коммит
dd834c683d
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче