diff options
| -rw-r--r-- | tools/mirb/mirb.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c index a9c0f26d2..d46bcff3c 100644 --- a/tools/mirb/mirb.c +++ b/tools/mirb/mirb.c @@ -132,6 +132,7 @@ main(void) { char last_char, ruby_code[1024], last_code_line[1024]; int char_index; + mrbc_context *cxt; struct mrb_parser_state *parser; mrb_state *mrb; mrb_value result; @@ -147,8 +148,8 @@ main(void) return EXIT_FAILURE; } - /* new parser instance */ - parser = mrb_parser_new(mrb); + cxt = mrbc_context_new(mrb); + cxt->capture_errors = 1; memset(ruby_code, 0, sizeof(*ruby_code)); memset(last_code_line, 0, sizeof(*last_code_line)); @@ -192,11 +193,11 @@ main(void) } /* parse code */ + parser = mrb_parser_new(mrb); parser->s = ruby_code; parser->send = ruby_code + strlen(ruby_code); - parser->capture_errors = 1; parser->lineno = 1; - mrb_parser_parse(parser, NULL); + mrb_parser_parse(parser, cxt); code_block_open = is_code_block_open(parser); if (code_block_open) { @@ -227,12 +228,13 @@ main(void) mrb_p(mrb, result); } } - memset(ruby_code, 0, sizeof(*ruby_code)); memset(ruby_code, 0, sizeof(*last_code_line)); } + mrb_pool_close(parser->pool); } } + mrbc_context_free(mrb, cxt); mrb_close(mrb); return 0; |
