summaryrefslogtreecommitdiffhomepage
path: root/src/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/proc.c')
-rw-r--r--src/proc.c9
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;