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

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

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