diff options
Diffstat (limited to 'deps/v8/src/unicode.cc')
-rw-r--r-- | deps/v8/src/unicode.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/deps/v8/src/unicode.cc b/deps/v8/src/unicode.cc index de5e36038b..db98be8675 100644 --- a/deps/v8/src/unicode.cc +++ b/deps/v8/src/unicode.cc @@ -305,6 +305,20 @@ uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) { 0x03C82080; } +bool Utf8::Validate(const byte* bytes, size_t length) { + size_t cursor = 0; + + // Performance optimization: Skip over single-byte values first. + while (cursor < length && bytes[cursor] <= kMaxOneByteChar) { + ++cursor; + } + + while (cursor < length) { + uchar c = ValueOf(bytes + cursor, length - cursor, &cursor); + if (!IsValidCharacter(c)) return false; + } + return true; +} // Uppercase: point.category == 'Lu' |