summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ruby.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6d1f4f558b..f245c1befb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed Dec 19 23:52:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file_internal): use original C string as the filename
+ for parser.
+ reported by whiteleaf at [ruby-list:49085] [ruby-dev:46738]
+ [Bug #7562]
+
Wed Dec 19 23:36:12 2012 Naohisa Goto <ngotogenome@gmail.com>
* marshal.c (marshal_dump, marshal_load): fix SEGV during make rdoc
diff --git a/ruby.c b/ruby.c
index adc1340f83..7a0310cb17 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1569,6 +1569,7 @@ load_file_internal(VALUE arg)
VALUE parser = argp->parser;
VALUE fname_v = rb_str_encode_ospath(argp->fname);
const char *fname = StringValueCStr(fname_v);
+ const char *orig_fname = StringValueCStr(argp->fname);
int script = argp->script;
struct cmdline_options *opt = argp->opt;
VALUE f;
@@ -1702,10 +1703,10 @@ load_file_internal(VALUE arg)
if (NIL_P(f)) {
f = rb_str_new(0, 0);
rb_enc_associate(f, enc);
- return (VALUE)rb_parser_compile_string(parser, fname, f, line_start);
+ return (VALUE)rb_parser_compile_string(parser, orig_fname, f, line_start);
}
rb_funcall(f, set_encoding, 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-"));
- tree = rb_parser_compile_file(parser, fname, f, line_start);
+ tree = rb_parser_compile_file(parser, orig_fname, f, line_start);
rb_funcall(f, set_encoding, 1, rb_parser_encoding(parser));
if (script && tree && rb_parser_end_seen_p(parser)) {
/*