Commit 52d39e62 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

prevent resource leak (outfile)

parent f5b6f03c
......@@ -70,6 +70,7 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
char *infile = NULL;
char *outfile = NULL;
char **origargv = argv;
int result = 0;
static const struct _args args_zero = { 0 };
*args = args_zero;
......@@ -93,7 +94,8 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
args->initname = (*argv) + 2;
if (*args->initname == '\0') {
printf("%s: Function name is not specified.\n", *origargv);
return -2;
result = -2;
goto exit;
}
args->dump_type = ((*argv)[1] == 'B') ? DUMP_TYPE_BIN : DUMP_TYPE_CODE;
break;
......@@ -117,8 +119,8 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
mrb_show_copyright(mrb);
exit(0);
}
else return -3;
return 0;
result = -3;
goto exit;
default:
break;
}
......@@ -127,16 +129,16 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
args->filename = infile = *argv;
if ((args->rfp = fopen(infile, "r")) == NULL) {
printf("%s: Cannot open program file. (%s)\n", *origargv, infile);
return 0;
goto exit;
}
}
}
if (infile == NULL)
return -4;
if (args->check_syntax)
return 0;
if (infile == NULL) {
result = -4;
goto exit;
}
if (!args->check_syntax) {
if (outfile == NULL) {
if (strcmp("-", infile) == 0) {
outfile = infile;
......@@ -150,10 +152,13 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
}
else if ((args->wfp = fopen(outfile, "wb")) == NULL) {
printf("%s: Cannot open output file. (%s)\n", *origargv, outfile);
return 0;
result = -1;
goto exit;
}
return 0;
}
exit:
if (outfile && infile != outfile) free(outfile);
return result;
}
static 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