ruby-changes:3439
From: ko1@a...
Date: 7 Jan 2008 18:11:44 +0900
Subject: [ruby-changes:3439] akr - Ruby:r14932 (trunk): * string.c (str_gsub): move rb_enc_get(str) to out of loop.
akr 2008-01-07 18:11:28 +0900 (Mon, 07 Jan 2008) New Revision: 14932 Modified files: trunk/ChangeLog trunk/string.c Log: * string.c (str_gsub): move rb_enc_get(str) to out of loop. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14932&r2=14931&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14932&r2=14931&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 14931) +++ ChangeLog (revision 14932) @@ -1,3 +1,7 @@ +Mon Jan 7 18:10:33 2008 Tanaka Akira <akr@f...> + + * string.c (str_gsub): move rb_enc_get(str) to out of loop. + Mon Jan 7 15:52:10 2008 Tanaka Akira <akr@f...> * include/ruby/oniguruma.h (OnigEncodingType): new member Index: string.c =================================================================== --- string.c (revision 14931) +++ string.c (revision 14932) @@ -2684,6 +2684,7 @@ int iter = 0; char *sp, *cp; int tainted = 0; + rb_encoding *str_enc; switch (argc) { case 1: @@ -2712,6 +2713,7 @@ sp = RSTRING_PTR(str); slen = RSTRING_LEN(str); cp = sp; + str_enc = rb_enc_get(str); do { n++; @@ -2734,7 +2736,7 @@ if (OBJ_TAINTED(val)) tainted = 1; len = beg - offset; /* copy pre-match substr */ - rb_enc_str_buf_cat(dest, cp, len, rb_enc_get(str)); + rb_enc_str_buf_cat(dest, cp, len, str_enc); rb_enc_str_buf_cat(dest, RSTRING_PTR(val), RSTRING_LEN(val), rb_enc_get(val)); RB_GC_GUARD(val); @@ -2746,8 +2748,8 @@ * in order to prevent infinite loops. */ if (RSTRING_LEN(str) <= END(0)) break; - len = rb_enc_mbclen(RSTRING_PTR(str)+END(0), RSTRING_END(str), rb_enc_get(str)); - rb_enc_str_buf_cat(dest, RSTRING_PTR(str)+END(0), len, rb_enc_get(str)); + len = rb_enc_mbclen(RSTRING_PTR(str)+END(0), RSTRING_END(str), str_enc); + rb_enc_str_buf_cat(dest, RSTRING_PTR(str)+END(0), len, str_enc); offset = END(0) + len; } cp = RSTRING_PTR(str) + offset; @@ -2755,7 +2757,7 @@ beg = rb_reg_search(pat, str, offset, 0); } while (beg >= 0); if (RSTRING_LEN(str) > offset) { - rb_enc_str_buf_cat(dest, cp, RSTRING_LEN(str) - offset, rb_enc_get(str)); + rb_enc_str_buf_cat(dest, cp, RSTRING_LEN(str) - offset, str_enc); } rb_backref_set(match); if (bang) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml