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

ruby-changes:17858

From: nobu <ko1@a...>
Date: Mon, 22 Nov 2010 21:31:05 +0900 (JST)
Subject: [ruby-changes:17858] Ruby:r29872 (trunk): * string.c (rb_str_inspect): fix for ascii-compatible external

nobu	2010-11-22 21:30:58 +0900 (Mon, 22 Nov 2010)

  New Revision: 29872

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29872

  Log:
    * string.c (rb_str_inspect): fix for ascii-compatible external
      encoding and different encoding string.  [ruby-core:33283]

  Modified files:
    trunk/ChangeLog
    trunk/string.c
    trunk/test/ruby/test_string.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29871)
+++ ChangeLog	(revision 29872)
@@ -1,3 +1,8 @@
+Mon Nov 22 21:30:57 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_str_inspect): fix for ascii-compatible external
+	  encoding and different encoding string.  [ruby-core:33283]
+
 Mon Nov 22 18:45:44 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* lib/mkmf.rb (create_makefile): should not duplicate rules.
Index: string.c
===================================================================
--- string.c	(revision 29871)
+++ string.c	(revision 29872)
@@ -4238,7 +4238,7 @@
               (cc == '$' || cc == '@' || cc == '{')))) {
 	    if (p - n > prev) str_buf_cat(result, prev, p - n - prev);
 	    str_buf_cat2(result, "\\");
-	    if (enc == resenc) {
+	    if (asciicompat || enc == resenc) {
 		prev = p - n;
 		continue;
 	    }
Index: test/ruby/test_string.rb
===================================================================
--- test/ruby/test_string.rb	(revision 29871)
+++ test/ruby/test_string.rb	(revision 29872)
@@ -1897,6 +1897,14 @@
       assert_equal('"\\u3042\\u3044\\u3046"', "\u3042\u3044\u3046".encode(e).inspect)
       assert_equal('"ab\\"c"', "ab\"c".encode(e).inspect, bug4081)
     end
+    begin
+      ext = Encoding.default_external
+      Encoding.default_external = "us-ascii"
+      i = "abc\"\\".force_encoding("utf-8").inspect
+    ensure
+      Encoding.default_external = ext
+    end
+    assert_equal('"abc\\"\\\\"', i, bug4081)
   end
 
   def test_prepend

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

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