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