diff options
Diffstat (limited to 'deps/v8/test/cctest/unicode-helpers.h')
-rw-r--r-- | deps/v8/test/cctest/unicode-helpers.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/deps/v8/test/cctest/unicode-helpers.h b/deps/v8/test/cctest/unicode-helpers.h index a09a8cbb3e..ca75fb65d7 100644 --- a/deps/v8/test/cctest/unicode-helpers.h +++ b/deps/v8/test/cctest/unicode-helpers.h @@ -10,7 +10,7 @@ static int Ucs2CharLength(unibrow::uchar c) { if (c == unibrow::Utf8::kIncomplete || c == unibrow::Utf8::kBufferEmpty) { return 0; - } else if (c < 0xffff) { + } else if (c < 0xFFFF) { return 1; } else { return 2; @@ -19,12 +19,16 @@ static int Ucs2CharLength(unibrow::uchar c) { static int Utf8LengthHelper(const char* s) { unibrow::Utf8::Utf8IncrementalBuffer buffer(unibrow::Utf8::kBufferEmpty); + unibrow::Utf8::State state = unibrow::Utf8::State::kAccept; + int length = 0; - for (; *s != '\0'; s++) { - unibrow::uchar tmp = unibrow::Utf8::ValueOfIncremental(*s, &buffer); + size_t i = 0; + while (s[i] != '\0') { + unibrow::uchar tmp = + unibrow::Utf8::ValueOfIncremental(s[i], &i, &state, &buffer); length += Ucs2CharLength(tmp); } - unibrow::uchar tmp = unibrow::Utf8::ValueOfIncrementalFinish(&buffer); + unibrow::uchar tmp = unibrow::Utf8::ValueOfIncrementalFinish(&state); length += Ucs2CharLength(tmp); return length; } |