[前][次][番号順一覧][スレッド一覧]

ruby-changes:57288

From: usa <ko1@a...>
Date: Tue, 27 Aug 2019 01:53:29 +0900 (JST)
Subject: [ruby-changes:57288] usa: f8efd7f9e8 (ruby_2_5): merge revision(s) 5b1bf8dd2d08ae7371ecf025967376bb794ed651: [Backport #16099]

https://git.ruby-lang.org/ruby.git/commit/?id=f8efd7f9e8

From f8efd7f9e852adda9fddb5682360bde263352e02 Mon Sep 17 00:00:00 2001
From: usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Mon, 26 Aug 2019 16:44:03 +0000
Subject: merge revision(s) 5b1bf8dd2d08ae7371ecf025967376bb794ed651: [Backport
 #16099] 	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]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

diff --git a/io.c b/io.c
index 59bbb4d..178ec14 100644
--- a/io.c
+++ b/io.c
@@ -6025,12 +6025,9 @@ io_strip_bom(VALUE io) https://github.com/ruby/ruby/blob/trunk/io.c#L6025
 		    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;
diff --git a/test/ruby/test_file.rb b/test/ruby/test_file.rb
index 9a795ee..10bfbd9 100644
--- a/test/ruby/test_file.rb
+++ b/test/ruby/test_file.rb
@@ -87,7 +87,7 @@ class TestFile < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_file.rb#L87
   end
 
   def test_bom_32le
-    assert_bom(["\xFF\xFE\0", "\0"], __method__)
+    assert_bom(["\xFF", "\xFE\0\0"], __method__)
   end
 
   def test_truncate_wbuf
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb
index 8ba3484..9ff5307 100644
--- a/test/ruby/test_io_m17n.rb
+++ b/test/ruby/test_io_m17n.rb
@@ -2082,14 +2082,14 @@ EOT https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io_m17n.rb#L2082
 
   def test_strip_bom
     with_tmpdir {
-      text = "\uFEFFa"
-      stripped = "a"
+      text = "\uFEFF\u0100a"
+      stripped = "\u0100a"
       %w/UTF-8 UTF-16BE UTF-16LE UTF-32BE UTF-32LE/.each do |name|
         path = '%s-bom.txt' % name
         content = text.encode(name)
         generate_file(path, content)
         result = File.read(path, mode: 'rb:BOM|UTF-8')
-        assert_equal(content[1].force_encoding("ascii-8bit"),
+        assert_equal(content[1..-1].force_encoding("ascii-8bit"),
                      result.force_encoding("ascii-8bit"))
         result = File.read(path, mode: 'rb:BOM|UTF-8:UTF-8')
         assert_equal(Encoding::UTF_8, result.encoding)
@@ -2099,10 +2099,10 @@ EOT https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io_m17n.rb#L2099
       bug3407 = '[ruby-core:30641]'
       path = 'UTF-8-bom.txt'
       result = File.read(path, encoding: 'BOM|UTF-8')
-      assert_equal("a", result.force_encoding("ascii-8bit"), bug3407)
+      assert_equal(stripped.b, result.force_encoding("ascii-8bit"), bug3407)
 
       bug8323 = '[ruby-core:54563] [Bug #8323]'
-      expected = "a\xff".force_encoding("utf-8")
+      expected = (stripped.b + "\xff").force_encoding("utf-8")
       open(path, 'ab') {|f| f.write("\xff")}
       result = File.read(path, encoding: 'BOM|UTF-8')
       assert_not_predicate(result, :valid_encoding?, bug8323)
diff --git a/version.h b/version.h
index beade84..ca386c0 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L1
 #define RUBY_VERSION "2.5.6"
 #define RUBY_RELEASE_DATE "2019-08-27"
-#define RUBY_PATCHLEVEL 190
+#define RUBY_PATCHLEVEL 191
 
 #define RUBY_RELEASE_YEAR 2019
 #define RUBY_RELEASE_MONTH 8
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]