From 546d1626e373cc72eb031a1129fb6d55c3aba6c1 Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Mon, 13 May 2013 10:15:37 -0400 Subject: Fix early free of irep->filename --- src/codegen.c | 8 +++++++- src/load.c | 3 --- src/state.c | 1 + 3 files changed, 8 insertions(+), 4 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; diff --git a/src/load.c b/src/load.c index b3f13a8ef..81d47858a 100644 --- a/src/load.c +++ b/src/load.c @@ -267,9 +267,6 @@ read_rite_lineno_record(mrb_state *mrb, const uint8_t *bin, size_t irepno, uint3 mrb->irep[irepno]->lines = lines; error_exit: - if (fname) { - mrb_free(mrb, fname); - } return ret; } diff --git a/src/state.c b/src/state.c index 9bf051c1a..b34fbd025 100644 --- a/src/state.c +++ b/src/state.c @@ -101,6 +101,7 @@ mrb_irep_free(mrb_state *mrb, struct mrb_irep *irep) mrb_free(mrb, irep->iseq); mrb_free(mrb, irep->pool); mrb_free(mrb, irep->syms); + mrb_free(mrb, (void *)irep->filename); mrb_free(mrb, irep->lines); mrb_free(mrb, irep); } -- cgit v1.2.3 From 7df8e6936e8a5545448cbaab3009ff574b627b36 Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Mon, 13 May 2013 10:16:31 -0400 Subject: Allow mrbc command options to be changed --- tasks/mruby_build_commands.rake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake index a47633c51..7b61b2dee 100644 --- a/tasks/mruby_build_commands.rake +++ b/tasks/mruby_build_commands.rake @@ -236,6 +236,8 @@ module MRuby end class Command::Mrbc < Command + attr_accessor :compile_options + def initialize(build) super @command = nil -- cgit v1.2.3 From 9f43a2560298b7f947a7a8211112e7ccfc246b04 Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Mon, 13 May 2013 10:16:52 -0400 Subject: Add example of modifying mrbc options to add debug info --- build_config.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build_config.rb b/build_config.rb index a6502ac86..75c3520ea 100644 --- a/build_config.rb +++ b/build_config.rb @@ -25,6 +25,11 @@ MRuby::Build.new do |conf| # cc.compile_options = "%{flags} -MMD -o %{outfile} -c %{infile}" # end + # mrbc settings + # conf.mrbc do |mrbc| + # mrbc.compile_options = "-g -B%{funcname} -o- -" # The -g option is required for line numbers + # end + # Linker settings # conf.linker do |linker| # linker.command = ENV['LD'] || 'gcc' -- cgit v1.2.3 From 87eb57b663fd564d81d59a3d79bae0bcf8ad43e0 Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Mon, 13 May 2013 11:34:41 -0400 Subject: Fix off by one issue --- src/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen.c b/src/codegen.c index 057b634a5..f4617a570 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -2423,7 +2423,7 @@ scope_finish(codegen_scope *s) fname_len = strlen(s->filename); fname = codegen_malloc(s, fname_len + 1); memcpy(fname, s->filename, fname_len); - fname[fname_len + 1] = '\0'; + fname[fname_len] = '\0'; irep->filename = fname; } -- cgit v1.2.3