diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-08-09 12:57:55 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-08-09 12:57:55 +0900 |
| commit | 0a61df1c34c62da59bf1443d6913e99158a938a4 (patch) | |
| tree | 11c42d0a39eec536aeb2f524229df467009cbb27 /src/vm.c | |
| parent | 8f629578882433bf290bcff14c18dadd545ad20b (diff) | |
| download | mruby-0a61df1c34c62da59bf1443d6913e99158a938a4.tar.gz mruby-0a61df1c34c62da59bf1443d6913e99158a938a4.zip | |
The block argument offset saved in the env was wrong; fix #3768
When the method takes variable number of argument (`argc = -1`),
the block argument offset should be `-1` not `0`.
Diffstat (limited to 'src/vm.c')
| -rw-r--r-- | src/vm.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -289,6 +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; } e->cxt.mid = e->cxt.c->cibase[cioff].mid; p = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*len); |
