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

ruby-changes:4027

From: ko1@a...
Date: Sun, 17 Feb 2008 13:04:32 +0900 (JST)
Subject: [ruby-changes:4027] akr - Ruby:r15517 (trunk): * string.c (str_sublen): use rb_enc_strlen.

akr	2008-02-17 13:04:14 +0900 (Sun, 17 Feb 2008)

  New Revision: 15517

  Modified files:
    trunk/ChangeLog
    trunk/string.c

  Log:
    * string.c (str_sublen): use rb_enc_strlen.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=15517&r2=15516&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15517&r2=15516&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15516)
+++ ChangeLog	(revision 15517)
@@ -1,3 +1,7 @@
+Sun Feb 17 13:03:48 2008  Tanaka Akira  <akr@f...>
+
+	* string.c (str_sublen): use rb_enc_strlen.
+
 Sun Feb 17 12:17:52 2008  NARUSE, Yui  <naruse@r...>
 
 	* enc/{euc_jp.c,gbk.c,iso_8859_1.c,iso_8859_11.c,iso_8859_13.c,
Index: string.c
===================================================================
--- string.c	(revision 15516)
+++ string.c	(revision 15517)
@@ -1071,19 +1071,11 @@
 static long
 str_sublen(VALUE str, long pos, rb_encoding *enc)
 {
-    if (rb_enc_mbmaxlen(enc) == 1 || pos < 0) return pos;
+    if (rb_enc_mbmaxlen(enc) == 1 || pos < 0)
+        return pos;
     else {
 	char *p = RSTRING_PTR(str);
-	char *e = p + pos;
-	long i;
-
-	i = 0;
-	while (p < e) {
-	    p += rb_enc_mbclen(p, RSTRING_END(str), enc);
-	    i++;
-	}
-	if (p == e) return i;
-	return i - 1;
+        return rb_enc_strlen(p, p + pos, enc);
     }
 }
 

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

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