summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/parse.y2
-rw-r--r--tools/mrbc/mrbc.c5
2 files changed, 3 insertions, 4 deletions
diff --git a/src/parse.y b/src/parse.y
index 8b4348a77..63204dfb0 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -5381,7 +5381,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
if (proc == NULL) {
static const char msg[] = "codegen error";
mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SCRIPT_ERROR, msg, sizeof(msg) - 1));
- return mrb_nil_value();
+ return mrb_undef_value();
}
if (c) {
if (c->dump_result) codedump_all(mrb, proc);
diff --git a/tools/mrbc/mrbc.c b/tools/mrbc/mrbc.c
index 27e151ad2..46d0d95ca 100644
--- a/tools/mrbc/mrbc.c
+++ b/tools/mrbc/mrbc.c
@@ -212,11 +212,10 @@ load_file(mrb_state *mrb, struct mrbc_args *args)
result = mrb_load_file_cxt(mrb, infile, c);
if (need_close) fclose(infile);
- if (mrb_undef_p(result) || mrb_fixnum(result) < 0) {
- mrbc_context_free(mrb, c);
+ mrbc_context_free(mrb, c);
+ if (mrb_undef_p(result)) {
return mrb_nil_value();
}
- mrbc_context_free(mrb, c);
return result;
}