summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorCarson McDonald <[email protected]>2013-05-13 10:15:37 -0400
committerCarson McDonald <[email protected]>2013-05-13 10:15:37 -0400
commit546d1626e373cc72eb031a1129fb6d55c3aba6c1 (patch)
treec563189333b44016ca57b40ce7b9775480a73f2d /src/codegen.c
parent077213c5eb6817fd044ddf319df3593706ae6653 (diff)
downloadmruby-546d1626e373cc72eb031a1129fb6d55c3aba6c1.tar.gz
mruby-546d1626e373cc72eb031a1129fb6d55c3aba6c1.zip
Fix early free of irep->filename
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 38328c669..057b634a5 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -2403,6 +2403,8 @@ scope_finish(codegen_scope *s)
{
mrb_state *mrb = s->mrb;
mrb_irep *irep = s->irep;
+ size_t fname_len;
+ char *fname;
irep->flags = 0;
if (s->iseq) {
@@ -2418,7 +2420,11 @@ scope_finish(codegen_scope *s)
irep->pool = (mrb_value *)codegen_realloc(s, irep->pool, sizeof(mrb_value)*irep->plen);
irep->syms = (mrb_sym *)codegen_realloc(s, irep->syms, sizeof(mrb_sym)*irep->slen);
if (s->filename) {
- irep->filename = s->filename;
+ fname_len = strlen(s->filename);
+ fname = codegen_malloc(s, fname_len + 1);
+ memcpy(fname, s->filename, fname_len);
+ fname[fname_len + 1] = '\0';
+ irep->filename = fname;
}
irep->nlocals = s->nlocals;