Project

General

Profile

Actions

Bug #8753

closed

__FILE__.encoding is wrong

Added by jiayp@glodon.com (贾 延平) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-08-06) [i386-mingw32]
[ruby-core:<unknown>]

Description

=begin
A bug introduced by change r42183
(({FILE}))'s encoding is wrong.
In file ((%ruby.c%)) and function (({load_file_internal})) type (({VALUE})) convert to (({char*})), and lost the encoding info
const char orig_fname = StringValueCStr(argp->fname);
and call the (({rb_parser_compile_file})) with the (({char
})) variable
tree = rb_parser_compile_file(parser, orig_fname, f, line_start);
and in file ((%parse.y%)) and function (({rb_parser_compile_file})), type (({char*})) convert to (({VALUE})) using the ((filesystem encoding)).
return rb_parser_compile_file_path(vparser, rb_filesystem_str_new_cstr(f), file, start);
But the beginning parameter (((({argp->fname}))'s encoding)) not the ((filesystem encoding)).

What's the principle of ruby's encoding?Why so many (({VALUE})) to (({char*})) converting?Is the (({char*})) has the regular encoding?

I think we should convert the encoding at the boundary and every thing should encoding to internal encoding in the internal, am I right?
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0