Skip to content

Commit f361b77

Browse files
committed
src: rename EncodeKnownValidUTF8 to EncodeValidUtf8
1 parent 19b71aa commit f361b77

3 files changed

Lines changed: 24 additions & 28 deletions

File tree

src/encoding_binding.cc

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -471,21 +471,14 @@ void BindingData::DecodeUTF8(const FunctionCallbackInfo<Value>& args) {
471471
return node::THROW_ERR_ENCODING_INVALID_ENCODED_DATA(
472472
env->isolate(), "The encoded data was not valid for encoding utf-8");
473473
}
474-
475-
Local<Value> ret;
476-
// Data is already validated as UTF-8 above; skip redundant re-validation.
477-
if (StringBytes::EncodeKnownValidUTF8(env->isolate(), data, length)
478-
.ToLocal(&ret)) {
479-
args.GetReturnValue().Set(ret);
480-
}
481-
return;
482474
}
483475

484476
if (length == 0) return args.GetReturnValue().SetEmptyString();
485477

486478
Local<Value> ret;
487479
v8::MaybeLocal<Value> encoded =
488-
StringBytes::Encode(env->isolate(), data, length, UTF8);
480+
has_fatal ? StringBytes::EncodeValidUtf8(env->isolate(), data, length)
481+
: StringBytes::Encode(env->isolate(), data, length, UTF8);
489482
if (encoded.ToLocal(&ret)) {
490483
args.GetReturnValue().Set(ret);
491484
}

src/string_bytes.cc

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -539,9 +539,9 @@ Maybe<size_t> StringBytes::Size(Isolate* isolate,
539539

540540
// Converts known-valid UTF-8 (buflen >= 32) to a V8 string via the fast
541541
// UTF-16 path. Callers must ensure buflen is range-checked.
542-
static MaybeLocal<Value> EncodeKnownValidNonAsciiUTF8(Isolate* isolate,
543-
const char* buf,
544-
size_t buflen) {
542+
static MaybeLocal<Value> EncodeValidNonAsciiUtf8(Isolate* isolate,
543+
const char* buf,
544+
size_t buflen) {
545545
size_t u16size = simdutf::utf16_length_from_utf8(buf, buflen);
546546
if (u16size > static_cast<size_t>(v8::String::kMaxLength)) {
547547
isolate->ThrowException(ERR_STRING_TOO_LONG(isolate));
@@ -555,18 +555,6 @@ static MaybeLocal<Value> EncodeKnownValidNonAsciiUTF8(Isolate* isolate,
555555
});
556556
}
557557

558-
MaybeLocal<Value> StringBytes::EncodeKnownValidUTF8(Isolate* isolate,
559-
const char* buf,
560-
size_t buflen) {
561-
buflen = keep_buflen_in_range(buflen);
562-
if (buflen >= 32) return EncodeKnownValidNonAsciiUTF8(isolate, buf, buflen);
563-
Local<String> str;
564-
if (!String::NewFromUtf8(isolate, buf, v8::NewStringType::kNormal, buflen)
565-
.ToLocal(&str))
566-
isolate->ThrowException(node::ERR_STRING_TOO_LONG(isolate));
567-
return str;
568-
}
569-
570558
MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
571559
const char* buf,
572560
size_t buflen,
@@ -680,7 +668,7 @@ MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
680668
static_cast<int>(r.count));
681669
}
682670
} else if (simdutf::validate_utf8(buf, buflen)) {
683-
return EncodeKnownValidNonAsciiUTF8(isolate, buf, buflen);
671+
return EncodeValidNonAsciiUtf8(isolate, buf, buflen);
684672
}
685673
}
686674

@@ -784,4 +772,19 @@ MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
784772
return Encode(isolate, buf, len, encoding);
785773
}
786774

775+
MaybeLocal<Value> StringBytes::EncodeValidUtf8(Isolate* isolate,
776+
const char* buf,
777+
size_t buflen) {
778+
buflen = keep_buflen_in_range(buflen);
779+
if (!simdutf::validate_ascii_with_errors(buf, buflen).error) {
780+
return ExternOneByteString::NewFromCopy(isolate, buf, buflen);
781+
}
782+
if (buflen >= 32) return EncodeValidNonAsciiUtf8(isolate, buf, buflen);
783+
Local<String> str;
784+
if (!String::NewFromUtf8(isolate, buf, v8::NewStringType::kNormal, buflen)
785+
.ToLocal(&str))
786+
isolate->ThrowException(node::ERR_STRING_TOO_LONG(isolate));
787+
return str;
788+
}
789+
787790
} // namespace node

src/string_bytes.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ class StringBytes {
8585

8686
// Like Encode(..., UTF8) but skips UTF-8 validation. Caller must guarantee
8787
// that buf contains valid UTF-8.
88-
static v8::MaybeLocal<v8::Value> EncodeKnownValidUTF8(v8::Isolate* isolate,
89-
const char* buf,
90-
size_t buflen);
88+
static v8::MaybeLocal<v8::Value> EncodeValidUtf8(v8::Isolate* isolate,
89+
const char* buf,
90+
size_t buflen);
9191

9292
// Warning: This reverses endianness on BE platforms, even though the
9393
// signature using uint16_t implies that it should not.

0 commit comments

Comments
 (0)