fix OP_APOST bug for no pre arg cases; fix #2810

parent 9ef4bbb1
......@@ -2125,18 +2125,14 @@ RETRY_TRY_BLOCK:
int pre = GETARG_B(i);
int post = GETARG_C(i);
struct RArray *ary;
int len, idx;
if (!mrb_array_p(v)) {
regs[a++] = mrb_ary_new_capa(mrb, 0);
while (post--) {
SET_NIL_VALUE(regs[a]);
a++;
}
v = mrb_ary_new_from_values(mrb, 1, &regs[a]);
}
else {
struct RArray *ary = mrb_ary_ptr(v);
int len = ary->len;
int idx;
ary = mrb_ary_ptr(v);
len = ary->len;
if (len > pre + post) {
regs[a++] = mrb_ary_new_from_values(mrb, len - pre - post, ary->ptr+pre);
while (post--) {
......@@ -2153,7 +2149,6 @@ RETRY_TRY_BLOCK:
idx++;
}
}
}
ARENA_RESTORE(mrb, ai);
NEXT;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment