summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-18 23:45:26 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-18 23:45:26 +0900
commitb2422cf021dcea31de060d69b3706678e2770939 (patch)
treeccb1eab45e1445e8506eb71cc8200bc128be1548
parent280f9dfc198fada0e127f20c83de932769170c05 (diff)
downloadmruby-b2422cf021dcea31de060d69b3706678e2770939.tar.gz
mruby-b2422cf021dcea31de060d69b3706678e2770939.zip
mruby-string-utf8: str_subseq takes UTF-8 index, not byte index; ref #2076
-rw-r--r--mrbgems/mruby-string-utf8/src/string.c5
1 files 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);
}