зеркало из https://github.com/github/ruby.git
* 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:
Родитель
49f6242b34
Коммит
cba2e89cdc
|
@ -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>
|
||||
|
||||
* 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);
|
||||
}
|
||||
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);
|
||||
if (RSTRING_PTR(tmp) && isdirsep(RSTRING_PTR(tmp)[0])) {
|
||||
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-32le"))}
|
||||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче