diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-12 17:13:54 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-12 17:13:54 +0000 |
commit | 78f5b54f1b2cdacfc4fab9b37cc71a1d195d9424 (patch) | |
tree | a453088e199e488b37e4e1e4c74a2cb73043c1f1 | |
parent | 051af24359916791ee09cc6c685d9668e780b61f (diff) | |
download | ruby-78f5b54f1b2cdacfc4fab9b37cc71a1d195d9424.tar.gz |
* enc/trans/utf8_mac.trans (buf_apply): fix for patterns
whose result is 2 bytes. [ruby-core:30751]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | enc/trans/utf8_mac.trans | 4 | ||||
-rw-r--r-- | test/ruby/test_econv.rb | 8 | ||||
-rw-r--r-- | test/ruby/test_transcode.rb | 10 |
4 files changed, 17 insertions, 10 deletions
@@ -1,3 +1,8 @@ +Sun Jun 13 02:12:46 2010 NARUSE, Yui <naruse@ruby-lang.org> + + * enc/trans/utf8_mac.trans (buf_apply): fix for patterns + whose result is 2 bytes. [ruby-core:30751] + Sun Jun 13 01:38:17 2010 NARUSE, Yui <naruse@ruby-lang.org> * time.c (rb_localtime_r2): fix mixed declarations and code. diff --git a/enc/trans/utf8_mac.trans b/enc/trans/utf8_mac.trans index 3ceb07eeb4..0d69dba46a 100644 --- a/enc/trans/utf8_mac.trans +++ b/enc/trans/utf8_mac.trans @@ -150,10 +150,10 @@ buf_apply(int mode, struct from_utf8_mac_status *sp, unsigned char *o) next_info = get_info(next_info, sp); switch (next_info & 0x1F) { case THREEbt: - o[n++] = getBT1(next_info); case TWObt: + o[n++] = getBT1(next_info); o[n++] = getBT2(next_info); - o[n++] = getBT3(next_info); + if (THREEbt == (next_info & 0x1F)) o[n++] = getBT3(next_info); if (mode == 3) { buf_clear(sp); } diff --git a/test/ruby/test_econv.rb b/test/ruby/test_econv.rb index cc03eaf218..00682f69cd 100644 --- a/test/ruby/test_econv.rb +++ b/test/ruby/test_econv.rb @@ -892,12 +892,4 @@ class TestEncodingConverter < Test::Unit::TestCase "".encode("euc-jp", :undef => :replace, :replace => broken) } end - - def test_utf8_mac - assert_equal("\u{fb4d}", "\u05DB\u05BF".encode("UTF-8", "UTF8-MAC")) - assert_equal("\u{1ff7}", "\u03C9\u0345\u0342".encode("UTF-8", "UTF8-MAC")) - - assert_equal("\u05DB\u05BF", "\u{fb4d}".encode("UTF8-MAC").force_encoding("UTF-8")) - assert_equal("\u03C9\u0345\u0342", "\u{1ff7}".encode("UTF8-MAC").force_encoding("UTF-8")) - end end diff --git a/test/ruby/test_transcode.rb b/test/ruby/test_transcode.rb index 6349d3b29b..1b15a5b556 100644 --- a/test/ruby/test_transcode.rb +++ b/test/ruby/test_transcode.rb @@ -1912,6 +1912,16 @@ class TestTranscode < Test::Unit::TestCase assert_equal(Encoding::Shift_JIS, b.encoding) end + def test_utf8_mac + assert_equal("\u{fb4d}", "\u05DB\u05BF".encode("UTF-8", "UTF8-MAC")) + assert_equal("\u{1ff7}", "\u03C9\u0345\u0342".encode("UTF-8", "UTF8-MAC")) + + assert_equal("\u05DB\u05BF", "\u{fb4d}".encode("UTF8-MAC").force_encoding("UTF-8")) + assert_equal("\u03C9\u0345\u0342", "\u{1ff7}".encode("UTF8-MAC").force_encoding("UTF-8")) + + check_both_ways("\u{e9 74 e8}", "e\u0301te\u0300", 'UTF8-MAC') + end + def test_fallback assert_equal("\u3042".encode("EUC-JP"), "\u{20000}".encode("EUC-JP", fallback: {"\u{20000}" => "\u3042".encode("EUC-JP")})) |