mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* file.c (rb_get_path_check): clarify error message for
ASCII-incompatible path name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8ffeda041b
commit
d2da9597c3
3 changed files with 20 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* file.c (rb_get_path_check): clarify error message for
|
||||||
|
ASCII-incompatible path name.
|
||||||
|
|
||||||
Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* common.mk (node_name.inc): remove command option -n and give
|
* common.mk (node_name.inc): remove command option -n and give
|
||||||
|
|
9
file.c
9
file.c
|
@ -148,6 +148,7 @@ rb_get_path_check(VALUE obj, int level)
|
||||||
{
|
{
|
||||||
VALUE tmp;
|
VALUE tmp;
|
||||||
ID to_path;
|
ID to_path;
|
||||||
|
rb_encoding *enc;
|
||||||
|
|
||||||
if (insecure_obj_p(obj, level)) {
|
if (insecure_obj_p(obj, level)) {
|
||||||
rb_insecure_operation();
|
rb_insecure_operation();
|
||||||
|
@ -161,11 +162,15 @@ rb_get_path_check(VALUE obj, int level)
|
||||||
StringValue(tmp);
|
StringValue(tmp);
|
||||||
|
|
||||||
tmp = file_path_convert(tmp);
|
tmp = file_path_convert(tmp);
|
||||||
StringValueCStr(tmp);
|
|
||||||
if (obj != tmp && insecure_obj_p(tmp, level)) {
|
if (obj != tmp && insecure_obj_p(tmp, level)) {
|
||||||
rb_insecure_operation();
|
rb_insecure_operation();
|
||||||
}
|
}
|
||||||
rb_enc_check(tmp, rb_enc_from_encoding(rb_usascii_encoding()));
|
enc = rb_enc_get(tmp);
|
||||||
|
if (!rb_enc_asciicompat(enc)) {
|
||||||
|
tmp = rb_str_inspect(tmp);
|
||||||
|
rb_raise(rb_eEncCompatError, "path name must be ASCII-compatible (%s): %s",
|
||||||
|
rb_enc_name(enc), RSTRING_PTR(tmp));
|
||||||
|
}
|
||||||
return rb_str_new4(tmp);
|
return rb_str_new4(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -239,4 +239,12 @@ class TestPath < Test::Unit::TestCase
|
||||||
assert_equal('', File.extname('.x'))
|
assert_equal('', File.extname('.x'))
|
||||||
assert_equal('', File.extname('..x'))
|
assert_equal('', File.extname('..x'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_ascii_incompatible_path
|
||||||
|
s = "\u{221e}\u{2603}"
|
||||||
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-16be"))}
|
||||||
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-16le"))}
|
||||||
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32be"))}
|
||||||
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32le"))}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue