diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-04 10:08:17 +0900 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-04 10:08:17 +0900 |
commit | a3188f43a812a8c3954391af66ed54352423ef60 (patch) | |
tree | 59c44dbae944ed9ecf8bba783abcc9ba1576e2d0 | |
parent | 2d189a6721c5e88973a53e385c0fb9eeb55fece9 (diff) |
Revert "Revert "Fix dangling path name from fstring""
This reverts commit 326c00b6f89e1c86e6fe29ab60da593eb6883a88.
We also confirmed that test_gced_eval_location fails without the changes:
https://travis-ci.org/ruby/ruby/builds/567417818
https://rubyci.org/logs/rubyci.s3.amazonaws.com/arch/ruby-master/log/20190804T000003Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu1604/ruby-master/log/20190804T003005Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-master/log/20190804T000007Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-master/log/20190804T001806Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian9/ruby-master/log/20190804T003005Z.fail.html.gz
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | vm_eval.c | 3 |
2 files changed, 4 insertions, 3 deletions
@@ -5812,7 +5812,7 @@ yycompile(VALUE vparser, struct parser_params *p, VALUE fname, int line) p->ruby_sourcefile = "(none)"; } else { - p->ruby_sourcefile_string = rb_str_new_frozen(fname); + p->ruby_sourcefile_string = rb_fstring(fname); p->ruby_sourcefile = StringValueCStr(fname); } p->ruby_sourceline = line - 1; @@ -9773,7 +9773,7 @@ gettable(struct parser_params *p, ID id, const YYLTYPE *loc) if (NIL_P(file)) file = rb_str_new(0, 0); else - file = rb_str_dup(rb_fstring(file)); + file = rb_str_dup(file); node = NEW_STR(add_mark_object(p, file), loc); } return node; @@ -1284,6 +1284,7 @@ eval_make_iseq(VALUE src, VALUE fname, int line, const rb_binding_t *bind, } if (fname != Qundef) { + if (!NIL_P(fname)) fname = rb_fstring(fname); realpath = fname; } else if (bind) { @@ -1293,7 +1294,7 @@ eval_make_iseq(VALUE src, VALUE fname, int line, const rb_binding_t *bind, rb_parser_warn_location(parser, TRUE); } else { - fname = rb_usascii_str_new_cstr("(eval)"); + fname = rb_fstring_lit("(eval)"); } rb_parser_set_context(parser, base_block, FALSE); |