OP_ENTER fix variable assignment

This commit is contained in:
ksss
2014-05-06 23:23:32 +09:00
parent 12915f9577
commit 0c3226db04
2 changed files with 11 additions and 2 deletions
+4 -2
View File
@@ -1325,16 +1325,18 @@ RETRY_TRY_BLOCK:
pc += argc - m1 - m2 + 1;
}
else {
int rnum = 0;
if (argv0 != argv) {
regs[len+1] = *blk; /* move block */
value_move(&regs[1], argv, m1+o);
}
if (r) {
regs[m1+o+1] = mrb_ary_new_from_values(mrb, argc-m1-o-m2, argv+m1+o);
rnum = argc-m1-o-m2;
regs[m1+o+1] = mrb_ary_new_from_values(mrb, rnum, argv+m1+o);
}
if (m2) {
if (argc-m2 > m1) {
value_move(&regs[m1+o+r+1], &argv[argc-m2], m2);
value_move(&regs[m1+o+r+1], &argv[m1+o+rnum], m2);
}
}
if (argv0 == argv) {