diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/mirb/mirb.c | 8 | ||||
| -rw-r--r-- | tools/mruby/mruby.c | 8 |
2 files changed, 11 insertions, 5 deletions
diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c index ed3b105b6..044d95faa 100644 --- a/tools/mirb/mirb.c +++ b/tools/mirb/mirb.c @@ -38,11 +38,8 @@ is_code_block_open(struct mrb_parser_state *parser) { int code_block_open = FALSE; - /* check for unterminated string */ - if (parser->lex_strterm) return TRUE; - /* 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; @@ -70,6 +67,9 @@ is_code_block_open(struct mrb_parser_state *parser) return code_block_open; } + /* check for unterminated string */ + if (parser->lex_strterm) return TRUE; + switch (parser->lstate) { /* all states which need more code */ 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)) { |
