summaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/mirb/mirb.c4
-rw-r--r--tools/mruby/mruby.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c
index 334f9359c..008829cfb 100644
--- a/tools/mirb/mirb.c
+++ b/tools/mirb/mirb.c
@@ -40,7 +40,7 @@ is_code_block_open(struct mrb_parser_state *parser)
int code_block_open = FALSE;
/* check for heredoc */
- if (parser->heredoc_starts_nextline) return TRUE;
+ if (parser->parsing_heredoc != NULL) return TRUE;
if (parser->heredoc_end_now) {
parser->heredoc_end_now = FALSE;
return FALSE;
@@ -339,9 +339,9 @@ main(int argc, char **argv)
}
ruby_code[0] = '\0';
last_code_line[0] = '\0';
- mrb_parser_free(parser);
mrb_gc_arena_restore(mrb, ai);
}
+ mrb_parser_free(parser);
}
mrbc_context_free(mrb, cxt);
mrb_close(mrb);
diff --git a/tools/mruby/mruby.c b/tools/mruby/mruby.c
index c52eb5e7b..f554ff4df 100644
--- a/tools/mruby/mruby.c
+++ b/tools/mruby/mruby.c
@@ -268,6 +268,7 @@ main(int argc, char **argv)
}
else {
mrbc_context *c = mrbc_context_new(mrb);
+ mrb_sym zero_sym = mrb_intern2(mrb, "$0", 2);
mrb_value v;
if (args.verbose)
@@ -276,13 +277,18 @@ main(int argc, char **argv)
c->no_exec = 1;
if (args.rfp) {
- mrbc_filename(mrb, c, args.cmdline ? args.cmdline : "-");
+ char *cmdline;
+ cmdline = args.cmdline ? args.cmdline : "-";
+ mrbc_filename(mrb, c, cmdline);
+ mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline));
v = mrb_load_file_cxt(mrb, args.rfp, c);
}
else {
mrbc_filename(mrb, c, "-e");
+ mrb_gv_set(mrb, zero_sym, mrb_str_new(mrb, "-e", 2));
v = mrb_load_string_cxt(mrb, args.cmdline, c);
}
+
mrbc_context_free(mrb, c);
if (mrb->exc) {
if (!mrb_undef_p(v)) {