diff options
| -rw-r--r-- | mrbgems/mruby-string-utf8/src/string.c | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-string-utf8/test/string.rb | 14 |
2 files changed, 17 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); } diff --git a/mrbgems/mruby-string-utf8/test/string.rb b/mrbgems/mruby-string-utf8/test/string.rb index 939ac24bb..2d5702ffc 100644 --- a/mrbgems/mruby-string-utf8/test/string.rb +++ b/mrbgems/mruby-string-utf8/test/string.rb @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- ## # String(utf8) Test @@ -45,3 +46,16 @@ assert('String#index') do assert_equal 12, str.index('ち', 10) assert_equal nil, str.index("さ") end + +assert('String#ord') do + got = "こんにちわ世界!".split('').map {|x| x.ord} + expect = [0x3053,0x3093,0x306b,0x3061,0x308f,0x4e16,0x754c,0x21] + assert_equal expect, got +end + +assert('String#split') do + got = "こんにちわ世界!".split('') + assert_equal ['こ', 'ん', 'に', 'ち', 'わ', '世', '界', '!'], got + got = "こんにちわ世界!".split('に') + assert_equal ['こん', 'ちわ世界!'], got +end |
