summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c b/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c
index dca50f03f..f209fa060 100644
--- a/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c
+++ b/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c
@@ -9,6 +9,22 @@ struct strip_args {
mrb_bool lvar;
};
+
+static void
+irep_remove_lv(mrb_state *mrb, mrb_irep *irep)
+{
+ size_t i;
+
+ if (irep->lv) {
+ mrb_free(mrb, irep->lv);
+ irep->lv = NULL;
+ }
+
+ for (i = 0; i < irep->rlen; ++i) {
+ irep_remove_lv(mrb, irep->reps[i]);
+ }
+}
+
static void
print_usage(const char *f)
{
@@ -99,7 +115,7 @@ main(int argc, char **argv)
for (i = args_result; i < argc; ++i) {
/* clear lv if --lvar is enabled */
if (args.lvar) {
- mrb_irep_remove_lv(mrb, ireps[i]);
+ irep_remove_lv(mrb, ireps[i]);
}
/* debug flag must be alway false */