diff options
Diffstat (limited to 'src/proc.c')
| -rw-r--r-- | src/proc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/proc.c b/src/proc.c index d48145f13..c79a53399 100644 --- a/src/proc.c +++ b/src/proc.c @@ -79,14 +79,15 @@ struct REnv* mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc) { struct REnv *e; - mrb_int bidx; + mrb_int bidx = 1; + int n = ci->n; + int nk = ci->nk; e = MRB_OBJ_ALLOC(mrb, MRB_TT_ENV, NULL); e->c = tc; MRB_ENV_SET_LEN(e, nstacks); - bidx = ci->argc; - if (bidx < 0) bidx = 2; - else bidx += 1; + bidx += (n == 15) ? 1 : n; + bidx += (nk == 15) ? 1 : (2*nk); MRB_ENV_SET_BIDX(e, bidx); e->mid = ci->mid; e->stack = stack; |
