mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #751 from masamitsu-murase/modify_block_copy_of_op_enter
Modify handling of OP_ENTER.
This commit is contained in:
@@ -1121,6 +1121,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
|
||||
}
|
||||
else {
|
||||
if (argv0 != argv) {
|
||||
regs[len+1] = *blk; /* move block */
|
||||
memmove(®s[1], argv, sizeof(mrb_value)*(m1+o)); /* m1 + o */
|
||||
}
|
||||
if (r) { /* r */
|
||||
@@ -1129,7 +1130,9 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
|
||||
if (m2) {
|
||||
memmove(®s[m1+o+r+1], &argv[argc-m2], sizeof(mrb_value)*m2);
|
||||
}
|
||||
regs[len+1] = *blk; /* move block */
|
||||
if (argv0 == argv) {
|
||||
regs[len+1] = *blk; /* move block */
|
||||
}
|
||||
pc += o + 1;
|
||||
}
|
||||
JUMP;
|
||||
|
||||
@@ -332,6 +332,14 @@ assert('BS Block [ruby-dev:31160]') do
|
||||
m {|(v,(*))|} == nil
|
||||
end
|
||||
|
||||
assert('BS Block [issue #750]') do
|
||||
def m(a, *b)
|
||||
yield
|
||||
end
|
||||
args = [1, 2, 3]
|
||||
m(*args){ 1 } == 1
|
||||
end
|
||||
|
||||
assert('BS Block 31') do
|
||||
def m()
|
||||
yield
|
||||
|
||||
Reference in New Issue
Block a user