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

ruby-changes:7828

From: nobu <ko1@a...>
Date: Mon, 15 Sep 2008 02:37:54 +0900 (JST)
Subject: [ruby-changes:7828] Ruby:r19349 (trunk): * transcode.c (str_encode): returns duplicated string if nothing

nobu	2008-09-15 02:37:35 +0900 (Mon, 15 Sep 2008)

  New Revision: 19349

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

  Log:
    * transcode.c (str_encode): returns duplicated string if nothing
      changed.  [ruby-core:18578]

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_transcode.rb
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19348)
+++ ChangeLog	(revision 19349)
@@ -1,3 +1,8 @@
+Mon Sep 15 02:37:19 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* transcode.c (str_encode): returns duplicated string if nothing
+	  changed.  [ruby-core:18578]
+
 Sun Sep  14 22:09:01 2008  Takeyuki Fujioka  <xibbar@r...>
 
 	* lib/cgi/core.rb (CGI::parse): performance improvement
Index: test/ruby/test_transcode.rb
===================================================================
--- test/ruby/test_transcode.rb	(revision 19348)
+++ test/ruby/test_transcode.rb	(revision 19349)
@@ -582,4 +582,10 @@
     assert_raise(Encoding::ConversionUndefined) { "\u203E".encode("CP51932") }
   end
 
+  def test_nothing_changed
+    a = "James".force_encoding("US-ASCII")
+    b = a.encode("Shift_JIS")
+    assert_equal(Encoding::US_ASCII, a.encoding)
+    assert_equal(Encoding::Shift_JIS, b.encoding)
+  end
 end
Index: transcode.c
===================================================================
--- transcode.c	(revision 19348)
+++ transcode.c	(revision 19349)
@@ -2570,7 +2570,12 @@
     int encidx = str_transcode(argc, argv, &newstr);
 
     if (encidx < 0) return rb_str_dup(str);
-    RBASIC(newstr)->klass = rb_obj_class(str);
+    if (newstr == str) {
+	newstr = rb_str_dup(str);
+    }
+    else {
+	RBASIC(newstr)->klass = rb_obj_class(str);
+    }
     return str_encode_associate(newstr, encidx);
 }
 

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

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