summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-09-05 13:02:32 +0900
committerGitHub <[email protected]>2016-09-05 13:02:32 +0900
commit495545ab09c2f89c85855ee46cf172a3fb95f658 (patch)
tree6bdb107ea50e3a9182e6d655ee42434e16fd80da
parentbf0893586aab8f9a128a8049e2554fb290b50c69 (diff)
parent068b46d5e2d3c17db9f48b94f217bf9237ed92bc (diff)
downloadmruby-495545ab09c2f89c85855ee46cf172a3fb95f658.tar.gz
mruby-495545ab09c2f89c85855ee46cf172a3fb95f658.zip
Merge pull request #3203 from nozomiS/mrbc_filename-fix
Fix mrbc_filename leak
-rw-r--r--mrbgems/mruby-compiler/core/parse.y6
1 files changed, 5 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index 51a08a489..22d31a390 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -5540,6 +5540,7 @@ mrbc_context_new(mrb_state *mrb)
MRB_API void
mrbc_context_free(mrb_state *mrb, mrbc_context *cxt)
{
+ mrb_free(mrb, cxt->filename);
mrb_free(mrb, cxt->syms);
mrb_free(mrb, cxt);
}
@@ -5549,9 +5550,12 @@ mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s)
{
if (s) {
int len = strlen(s);
- char *p = (char *)mrb_alloca(mrb, len + 1);
+ char *p = (char *)mrb_malloc(mrb, len + 1);
memcpy(p, s, len + 1);
+ if (c->filename) {
+ mrb_free(mrb, c->filename);
+ }
c->filename = p;
}
return c->filename;