ruby-changes:12780
From: naruse <ko1@a...>
Date: Wed, 12 Aug 2009 07:53:04 +0900 (JST)
Subject: [ruby-changes:12780] Ruby:r24506 (trunk): * encoding.c (rb_enc_compatible): If a string is empty and
naruse 2009-08-12 07:52:39 +0900 (Wed, 12 Aug 2009) New Revision: 24506 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24506 Log: * encoding.c (rb_enc_compatible): If a string is empty and other's encoding is US-ASCII, returns the empty string's encoding. [ruby-list:46274] Modified files: trunk/ChangeLog trunk/encoding.c trunk/test/ruby/test_m17n.rb Index: encoding.c =================================================================== --- encoding.c (revision 24505) +++ encoding.c (revision 24506) @@ -709,9 +709,9 @@ enc2 = rb_enc_from_index(idx2); if (TYPE(str2) == T_STRING && RSTRING_LEN(str2) == 0) - return enc1; + return (idx1 == ENCINDEX_US_ASCII && rb_enc_asciicompat(enc2)) ? enc2 : enc1; if (TYPE(str1) == T_STRING && RSTRING_LEN(str1) == 0) - return enc2; + return (idx2 == ENCINDEX_US_ASCII && rb_enc_asciicompat(enc1)) ? enc1 : enc2; if (!rb_enc_asciicompat(enc1) || !rb_enc_asciicompat(enc2)) { return 0; } Index: ChangeLog =================================================================== --- ChangeLog (revision 24505) +++ ChangeLog (revision 24506) @@ -1,3 +1,9 @@ +Wed Aug 12 07:41:31 2009 NARUSE, Yui <naruse@r...> + + * encoding.c (rb_enc_compatible): If a string is empty and + other's encoding is US-ASCII, returns the empty string's encoding. + [ruby-list:46274] + Wed Aug 12 07:38:12 2009 NARUSE, Yui <naruse@r...> * encoding.c (is_data_encoding): fix condition. Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 24505) +++ test/ruby/test_m17n.rb (revision 24506) @@ -7,6 +7,7 @@ end module AESU + def ua(str) str.dup.force_encoding("US-ASCII") end def a(str) str.dup.force_encoding("ASCII-8BIT") end def e(str) str.dup.force_encoding("EUC-JP") end def s(str) str.dup.force_encoding("Windows-31J") end @@ -1300,6 +1301,7 @@ def test_compatible assert_nil Encoding.compatible?("",0) + assert_equal(Encoding::UTF_8, Encoding.compatible?(u(""), ua("abc"))) assert_equal(Encoding::UTF_8, Encoding.compatible?(Encoding::UTF_8, Encoding::UTF_8)) assert_equal(Encoding::UTF_8, Encoding.compatible?(Encoding::UTF_8, Encoding::US_ASCII)) assert_equal(Encoding::ASCII_8BIT, -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/