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

ruby-changes:3448

From: ko1@a...
Date: 8 Jan 2008 07:57:13 +0900
Subject: [ruby-changes:3448] akr - Ruby:r14941 (trunk): * string.c (rb_str_buf_append): fix append itself.

akr	2008-01-08 07:57:00 +0900 (Tue, 08 Jan 2008)

  New Revision: 14941

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

  Log:
    * string.c (rb_str_buf_append): fix append itself.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_string.rb?r1=14941&r2=14940&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14941&r2=14940&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14941&r2=14940&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14940)
+++ ChangeLog	(revision 14941)
@@ -1,3 +1,7 @@
+Tue Jan  8 07:56:11 2008  Tanaka Akira  <akr@f...>
+
+	* string.c (rb_str_buf_append): fix append itself.
+
 Tue Jan  8 01:13:50 2008  Tanaka Akira  <akr@f...>
 
 	* string.c (STR_ENC_GET): defined.  same as rb_enc_get without
Index: string.c
===================================================================
--- string.c	(revision 14940)
+++ string.c	(revision 14941)
@@ -1166,8 +1166,14 @@
 VALUE
 rb_str_buf_append(VALUE str, VALUE str2)
 {
-    int str2_cr = ENC_CODERANGE(str2);
+    int str2_cr;
 
+    if (str == str2) {
+        str2 = rb_str_dup(str2);
+    }
+
+    str2_cr = ENC_CODERANGE(str2);
+
     rb_enc_cr_str_buf_cat(str, RSTRING_PTR(str2), RSTRING_LEN(str2),
         ENCODING_GET(str2), str2_cr, &str2_cr);
 
Index: test/ruby/test_string.rb
===================================================================
--- test/ruby/test_string.rb	(revision 14940)
+++ test/ruby/test_string.rb	(revision 14941)
@@ -170,6 +170,12 @@
   def test_LSHIFT # '<<'
     assert_equal(S("world!"), S("world") << 33)
     assert_equal(S("world!"), S("world") << S('!'))
+
+    s = "a"
+    10.times {|i|
+      s << s
+      assert_equal("a" * (2<<i), s)
+    }
   end
 
   def test_MATCH # '=~'

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

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