diff options
Diffstat (limited to 'mrbgems/mruby-string-utf8')
| -rw-r--r-- | mrbgems/mruby-string-utf8/src/string.c | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-string-utf8/test/string.rb | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c index 326d79e40..2dd848c86 100644 --- a/mrbgems/mruby-string-utf8/src/string.c +++ b/mrbgems/mruby-string-utf8/src/string.c @@ -7,7 +7,7 @@ /* TODO: duplicate definition in src/re.h */ #define REGEXP_CLASS "Regexp" -static size_t utf8len_tab[256] = +static const char utf8len_codepage[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, @@ -16,7 +16,7 @@ static size_t utf8len_tab[256] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1, }; static size_t @@ -27,7 +27,7 @@ utf8len(unsigned char* p) if (*p == 0) return 1; - len = utf8len_tab[*p]; + len = utf8len_codepage[*p]; for (i = 1; i < len; ++i) if ((p[i] & 0xc0) != 0x80) return 1; diff --git a/mrbgems/mruby-string-utf8/test/string.rb b/mrbgems/mruby-string-utf8/test/string.rb index fc21c0a93..bfa5f0170 100644 --- a/mrbgems/mruby-string-utf8/test/string.rb +++ b/mrbgems/mruby-string-utf8/test/string.rb @@ -25,3 +25,8 @@ assert('String#reverse!', '15.2.10.5.30') do assert_equal '!界世わちにんこ', a assert_equal '!界世わちにんこ', 'こんにちわ世界!'.reverse! end + +assert('Invalid sequence') do + assert_equal 5, "\xF8\x88\x80\x80\x80".size + assert_equal 6, "\xFC\x84\x80\x80\x80\x80".size +end |
