mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #6310 from dearblue/ci-extend
This commit is contained in:
@@ -336,19 +336,21 @@ cipush(mrb_state *mrb, mrb_int push_stacks, uint8_t cci, struct RClass *target_c
|
||||
const struct RProc *proc, struct RProc *blk, mrb_sym mid, uint16_t argc)
|
||||
{
|
||||
struct mrb_context *c = mrb->c;
|
||||
mrb_callinfo *ci = c->ci;
|
||||
mrb_callinfo *ci = c->ci + 1;
|
||||
|
||||
if (ci + 1 == c->ciend) {
|
||||
if (ci < c->ciend) {
|
||||
c->ci = ci;
|
||||
}
|
||||
else {
|
||||
ptrdiff_t size = ci - c->cibase;
|
||||
|
||||
if (size > MRB_CALL_LEVEL_MAX) {
|
||||
if (size >= MRB_CALL_LEVEL_MAX) {
|
||||
mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err));
|
||||
}
|
||||
c->cibase = (mrb_callinfo*)mrb_realloc(mrb, c->cibase, sizeof(mrb_callinfo)*size*2);
|
||||
c->ci = c->cibase + size;
|
||||
c->ci = ci = c->cibase + size;
|
||||
c->ciend = c->cibase + size * 2;
|
||||
}
|
||||
ci = ++c->ci;
|
||||
ci->mid = mid;
|
||||
CI_PROC_SET(ci, proc);
|
||||
ci->blk = blk;
|
||||
|
||||
Reference in New Issue
Block a user