From b2422cf021dcea31de060d69b3706678e2770939 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 18 Apr 2014 23:45:26 +0900 Subject: mruby-string-utf8: str_subseq takes UTF-8 index, not byte index; ref #2076 --- mrbgems/mruby-string-utf8/src/string.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c index 3d5d44c77..45dd66eec 100644 --- a/mrbgems/mruby-string-utf8/src/string.c +++ b/mrbgems/mruby-string-utf8/src/string.c @@ -636,7 +636,8 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str) while (ptr < eptr && (end = mrb_memsearch(sptr, slen, ptr, eptr - ptr)) >= 0) { - mrb_ary_push(mrb, result, str_subseq(mrb, str, ptr - temp, end)); + // mrb_ary_push(mrb, result, str_subseq(mrb, str, ptr - temp, end)); + mrb_ary_push(mrb, result, mrb_str_new(mrb, ptr, end)); mrb_gc_arena_restore(mrb, ai); ptr += end + slen; if (lim_p && lim <= ++i) break; @@ -652,7 +653,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str) tmp = mrb_str_new_lit(mrb, ""); } else { - tmp = str_subseq(mrb, str, beg, RSTRING_LEN(str)-beg); + tmp = mrb_str_new(mrb, RSTRING_PTR(str)+beg, RSTRING_LEN(str)-beg); } mrb_ary_push(mrb, result, tmp); } -- cgit v1.2.3