Commit 59389561 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

mrbc: better cleanup before exit

parent e3806922
...@@ -144,12 +144,13 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args) ...@@ -144,12 +144,13 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
} }
static void static void
cleanup(struct _args *args) cleanup(mrb_state *mrb, struct _args *args)
{ {
if (args->rfp) if (args->rfp)
fclose(args->rfp); fclose(args->rfp);
if (args->wfp) if (args->wfp)
fclose(args->wfp); fclose(args->wfp);
mrb_close(mrb);
} }
int int
...@@ -168,9 +169,8 @@ main(int argc, char **argv) ...@@ -168,9 +169,8 @@ main(int argc, char **argv)
n = parse_args(mrb, argc, argv, &args); n = parse_args(mrb, argc, argv, &args);
if (n < 0 || args.rfp == NULL) { if (n < 0 || args.rfp == NULL) {
cleanup(&args); cleanup(mrb, &args);
usage(argv[0]); usage(argv[0]);
mrb_close(mrb);
return n; return n;
} }
...@@ -179,16 +179,14 @@ main(int argc, char **argv) ...@@ -179,16 +179,14 @@ main(int argc, char **argv)
c->dump_result = 1; c->dump_result = 1;
c->no_exec = 1; c->no_exec = 1;
result = mrb_load_file_cxt(mrb, args.rfp, c); result = mrb_load_file_cxt(mrb, args.rfp, c);
if (mrb_undef_p(result)) { if (mrb_undef_p(result) || mrb_fixnum(result) < 0) {
cleanup(&args); cleanup(mrb, &args);
mrb_close(mrb); return EXIT_FAILURE;
return -1;
} }
n = mrb_fixnum(result); if (args.check_syntax) {
if (n < 0 || args.check_syntax) { printf("Syntax OK\n");
cleanup(&args); cleanup(mrb, &args);
mrb_close(mrb); return EXIT_SUCCESS;
return n;
} }
if (args.initname) { if (args.initname) {
if (args.dump_type == DUMP_TYPE_BIN) if (args.dump_type == DUMP_TYPE_BIN)
...@@ -200,10 +198,8 @@ main(int argc, char **argv) ...@@ -200,10 +198,8 @@ main(int argc, char **argv)
n = mrb_dump_irep(mrb, n, args.wfp); n = mrb_dump_irep(mrb, n, args.wfp);
} }
cleanup(&args); cleanup(mrb, &args);
mrb_close(mrb); return EXIT_SUCCESS;
return n;
} }
void void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment