mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* file.c (rb_file_join): honor input encodings than ASCII-8BIT.
[ruby-core:40338] [Bug #5483] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
49f6242b34
commit
cba2e89cdc
3 changed files with 18 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Wed Oct 26 15:24:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* file.c (rb_file_join): honor input encodings than ASCII-8BIT.
|
||||||
|
[ruby-core:40338] [Bug #5483]
|
||||||
|
|
||||||
Tue Oct 25 21:52:31 2011 Tanaka Akira <akr@fsij.org>
|
Tue Oct 25 21:52:31 2011 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* include/ruby/defines.h: use "__sparc" instead of "sparc" and
|
* include/ruby/defines.h: use "__sparc" instead of "sparc" and
|
||||||
|
|
5
file.c
5
file.c
|
@ -3847,7 +3847,10 @@ rb_file_join(VALUE ary, VALUE sep)
|
||||||
FilePathStringValue(tmp);
|
FilePathStringValue(tmp);
|
||||||
}
|
}
|
||||||
name = StringValueCStr(result);
|
name = StringValueCStr(result);
|
||||||
if (i > 0 && !NIL_P(sep)) {
|
if (i == 0) {
|
||||||
|
rb_enc_copy(result, tmp);
|
||||||
|
}
|
||||||
|
else if (!NIL_P(sep)) {
|
||||||
tail = chompdirsep(name);
|
tail = chompdirsep(name);
|
||||||
if (RSTRING_PTR(tmp) && isdirsep(RSTRING_PTR(tmp)[0])) {
|
if (RSTRING_PTR(tmp) && isdirsep(RSTRING_PTR(tmp)[0])) {
|
||||||
rb_str_set_len(result, tail - name);
|
rb_str_set_len(result, tail - name);
|
||||||
|
|
|
@ -247,4 +247,13 @@ class TestPath < Test::Unit::TestCase
|
||||||
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32be"))}
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32be"))}
|
||||||
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32le"))}
|
assert_raise(Encoding::CompatibilityError) {open(s.encode("utf-32le"))}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_join
|
||||||
|
bug5483 = '[ruby-core:40338]'
|
||||||
|
path = %w[a b]
|
||||||
|
Encoding.list.each do |e|
|
||||||
|
next unless e.ascii_compatible?
|
||||||
|
assert_equal(e, File.join(*path.map {|s| s.force_encoding(e)}).encoding, bug5483)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue