ruby-changes:17856
From: nobu <ko1@a...>
Date: Mon, 22 Nov 2010 18:33:39 +0900 (JST)
Subject: [ruby-changes:17856] Ruby:r29868 (trunk): * string.c (rb_str_inspect): append for each chars instead of bulk
nobu 2010-11-22 18:33:32 +0900 (Mon, 22 Nov 2010) New Revision: 29868 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29868 Log: * string.c (rb_str_inspect): append for each chars instead of bulk copy if encoding conversion is needed. [ruby-core:33283] Modified files: trunk/ChangeLog trunk/string.c trunk/test/ruby/test_string.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 29867) +++ ChangeLog (revision 29868) @@ -1,3 +1,8 @@ +Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@r...> + + * string.c (rb_str_inspect): append for each chars instead of bulk + copy if encoding conversion is needed. [ruby-core:33283] + Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@r...> * time.c (time_zone): use rb_locale_str_new_cstr to set encoding Index: string.c =================================================================== --- string.c (revision 29867) +++ string.c (revision 29868) @@ -4238,8 +4238,10 @@ (cc == '$' || cc == '@' || cc == '{')))) { if (p - n > prev) str_buf_cat(result, prev, p - n - prev); str_buf_cat2(result, "\\"); - prev = p - n; - continue; + if (enc == resenc) { + prev = p - n; + continue; + } } switch (c) { case '\n': cc = 'n'; break; Index: test/ruby/test_string.rb =================================================================== --- test/ruby/test_string.rb (revision 29867) +++ test/ruby/test_string.rb (revision 29868) @@ -1890,10 +1890,12 @@ end def test_ascii_incomat_inspect + bug4081 = '[ruby-core:33283]' [Encoding::UTF_16LE, Encoding::UTF_16BE, Encoding::UTF_32LE, Encoding::UTF_32BE].each do |e| assert_equal('"abc"', "abc".encode(e).inspect) assert_equal('"\\u3042\\u3044\\u3046"', "\u3042\u3044\u3046".encode(e).inspect) + assert_equal('"ab\\"c"', "ab\"c".encode(e).inspect, bug4081) end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/