diff options
| author | Shokuji <[email protected]> | 2019-04-16 09:47:32 +0900 |
|---|---|---|
| committer | Shokuji <[email protected]> | 2019-04-16 09:47:32 +0900 |
| commit | cdfeb53887d886adc10848e4a6e76c81fbd2a4c4 (patch) | |
| tree | 2bc17e536d396f7d20b8c9de4ce39c4f284d9256 /mrbgems/mruby-compiler/core/codegen.c | |
| parent | 164985881b6d7d96218ec5cd986ca1bb4c919698 (diff) | |
| parent | 4e3e4260c3860e4c0c274f520744bdb7629ea9cd (diff) | |
| download | mruby-cdfeb53887d886adc10848e4a6e76c81fbd2a4c4.tar.gz mruby-cdfeb53887d886adc10848e4a6e76c81fbd2a4c4.zip | |
Merge branch 'master' into fix_mruby-io_test
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 927cc3a0f..ed8fc3150 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -102,6 +102,7 @@ codegen_error(codegen_scope *s, const char *message) while (s->prev) { codegen_scope *tmp = s->prev; mrb_free(s->mrb, s->iseq); + mrb_free(s->mrb, s->lines); mrb_pool_close(s->mpool); s = tmp; } @@ -272,8 +273,7 @@ genop_W(codegen_scope *s, mrb_code i, uint32_t a) #define NOVAL 0 #define VAL 1 -//static -mrb_bool +static mrb_bool no_optimize(codegen_scope *s) { if (s && s->parser && s->parser->no_optimize) @@ -3020,6 +3020,9 @@ scope_finish(codegen_scope *s) mrb_state *mrb = s->mrb; mrb_irep *irep = s->irep; + if (s->nlocals >= 0x3ff) { + codegen_error(s, "too many local variables"); + } irep->flags = 0; if (s->iseq) { irep->iseq = (mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc); |
