mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
UTF LE is fixed at least the first 2 bytes
* io.c (io_strip_bom): if the first 2 bytes are 0xFF0xFE, it should be a little-endian UTF, 16 or 32. [Bug #16099]
This commit is contained in:
parent
79f9c626b6
commit
5b1bf8dd2d
3 changed files with 5 additions and 8 deletions
7
io.c
7
io.c
|
@ -6136,12 +6136,9 @@ io_strip_bom(VALUE io)
|
|||
return ENCINDEX_UTF_32LE;
|
||||
}
|
||||
rb_io_ungetbyte(io, b4);
|
||||
rb_io_ungetbyte(io, b3);
|
||||
}
|
||||
else {
|
||||
rb_io_ungetbyte(io, b3);
|
||||
return ENCINDEX_UTF_16LE;
|
||||
}
|
||||
rb_io_ungetbyte(io, b3);
|
||||
return ENCINDEX_UTF_16LE;
|
||||
}
|
||||
rb_io_ungetbyte(io, b2);
|
||||
break;
|
||||
|
|
|
@ -87,7 +87,7 @@ class TestFile < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_bom_32le
|
||||
assert_bom(["\xFF\xFE\0", "\0"], __method__)
|
||||
assert_bom(["\xFF", "\xFE\0\0"], __method__)
|
||||
end
|
||||
|
||||
def test_truncate_wbuf
|
||||
|
|
|
@ -2084,8 +2084,8 @@ EOT
|
|||
define_method("test_strip_bom:#{name}") do
|
||||
path = "#{name}-bom.txt"
|
||||
with_tmpdir {
|
||||
text = "\uFEFFa"
|
||||
stripped = "a"
|
||||
text = "\uFEFF\u0100a"
|
||||
stripped = "\u0100a"
|
||||
content = text.encode(name)
|
||||
generate_file(path, content)
|
||||
result = File.read(path, mode: 'rb:BOM|UTF-8')
|
||||
|
|
Loading…
Add table
Reference in a new issue