summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/compile.h1
-rw-r--r--src/parse.y5
-rw-r--r--tools/mirb/mirb.c2
3 files changed, 7 insertions, 1 deletions
diff --git a/include/mruby/compile.h b/include/mruby/compile.h
index 8f65932ba..42820896e 100644
--- a/include/mruby/compile.h
+++ b/include/mruby/compile.h
@@ -98,6 +98,7 @@ struct mrb_parser_state {
};
struct mrb_parser_state* mrb_parser_new(mrb_state*);
+void mrb_parser_free(struct mrb_parser_state*);
const char *mrb_parser_filename(struct mrb_parser_state*, const char*);
void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*);
diff --git a/src/parse.y b/src/parse.y
index 63d39ec5f..b0d399a98 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -4775,6 +4775,11 @@ mrb_parser_new(mrb_state *mrb)
return p;
}
+void
+mrb_parser_free(parser_state *p) {
+ mrb_pool_close(p->pool);
+}
+
mrbc_context*
mrbc_context_new(mrb_state *mrb)
{
diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c
index d46bcff3c..8b36cb5a6 100644
--- a/tools/mirb/mirb.c
+++ b/tools/mirb/mirb.c
@@ -231,7 +231,7 @@ main(void)
memset(ruby_code, 0, sizeof(*ruby_code));
memset(ruby_code, 0, sizeof(*last_code_line));
}
- mrb_pool_close(parser->pool);
+ mrb_parser_free(parser);
}
}
mrbc_context_free(mrb, cxt);