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