summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/unicode-helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/unicode-helpers.h')
-rw-r--r--deps/v8/test/cctest/unicode-helpers.h12
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;
}