summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-08-09 15:23:20 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-08-09 15:23:20 +0900
commitf9c3ebd29d7410be209b3f22b9923f0f81f0141d (patch)
tree8691361e1cc167a570323226a9ce3d2122ed1def /src/vm.c
parent0a61df1c34c62da59bf1443d6913e99158a938a4 (diff)
downloadmruby-f9c3ebd29d7410be209b3f22b9923f0f81f0141d.tar.gz
mruby-f9c3ebd29d7410be209b3f22b9923f0f81f0141d.zip
Wrong blkargs pos for vararg; ref #3768
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 970753a7c..f1dc471cc 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -289,7 +289,7 @@ mrb_env_unshare(mrb_state *mrb, struct REnv *e)
if (!e->c) {
/* save block argument position (negated) */
e->cioff = -e->cxt.c->cibase[cioff].argc-1;
- if (e->cioff == 0) e->cioff = -1;
+ if (e->cioff == 0) e->cioff = -2; /* blkarg position for vararg (1:args, 2:blk) */
}
e->cxt.mid = e->cxt.c->cibase[cioff].mid;
p = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*len);