diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-09-05 21:11:41 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-09-05 21:11:41 +0900 |
| commit | 7f4b57bb2029b52a3ef136588e06721b53b10bf8 (patch) | |
| tree | fbeb2dbc6196f34aa4b1436d057356536e4dfad0 /mrbgems/mruby-compiler/core/codegen.c | |
| parent | 3acaa44a70a44a816076dee65310f0f2487aeebd (diff) | |
| download | mruby-7f4b57bb2029b52a3ef136588e06721b53b10bf8.tar.gz mruby-7f4b57bb2029b52a3ef136588e06721b53b10bf8.zip | |
Restrict `OP_EPOP` operand to `1`; ref #3789
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 8f15a9b18..5bb0545c4 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -279,10 +279,20 @@ genop_peep(codegen_scope *s, mrb_code i, int val) } break; case OP_EPOP: +#if 1 + if (GETARG_A(i) > 1) { + int j, len = GETARG_A(i), n; + for (j=0; j<len; j++) { + n = genop(s, MKOP_A(OP_EPOP, 1)); + } + return n; + } +#else if (c0 == OP_EPOP) { s->iseq[s->pc-1] = MKOP_A(OP_EPOP, GETARG_A(i0)+GETARG_A(i)); return 0; } +#endif break; case OP_POPERR: if (c0 == OP_POPERR) { |
