summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--string.c11
2 files changed, 6 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f48d2925d..e91b2b8454 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Jul 22 17:24:14 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_each_char_size): performance implement by
+ using rb_str_length().
+
Mon Jul 22 16:32:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_eval.c (eval_string_with_cref): check by Check_TypedStruct
diff --git a/string.c b/string.c
index 1d784e3ef7..e5d04cddc6 100644
--- a/string.c
+++ b/string.c
@@ -6501,16 +6501,7 @@ rb_str_bytes(VALUE str)
static VALUE
rb_str_each_char_size(VALUE str, VALUE args, VALUE eobj)
{
- long len = RSTRING_LEN(str);
- if (!single_byte_optimizable(str)) {
- const char *ptr = RSTRING_PTR(str);
- rb_encoding *enc = rb_enc_get(str);
- const char *end_ptr = ptr + len;
- for (len = 0; ptr < end_ptr; ++len) {
- ptr += rb_enc_mbclen(ptr, end_ptr, enc);
- }
- }
- return LONG2FIX(len);
+ return rb_str_length(str);
}
static VALUE