8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 429c38d commit f373d6aCopy full SHA for f373d6a
src/js_native_api_v8.cc
@@ -2441,21 +2441,21 @@ napi_status NAPI_CDECL napi_get_value_string_latin1(
2441
2442
v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value);
2443
RETURN_STATUS_IF_FALSE(env, val->IsString(), napi_string_expected);
2444
+ v8::Local<v8::String> str = val.As<v8::String>();
2445
2446
if (!buf) {
2447
CHECK_ARG(env, result);
- *result = val.As<v8::String>()->Length();
2448
+ *result = str->Length();
2449
} else if (bufsize != 0) {
- int copied =
2450
- val.As<v8::String>()->WriteOneByte(env->isolate,
2451
- reinterpret_cast<uint8_t*>(buf),
2452
- 0,
2453
- bufsize - 1,
2454
- v8::String::NO_NULL_TERMINATION);
2455
-
2456
- buf[copied] = '\0';
+ uint32_t length = static_cast<uint32_t>(
+ std::min(bufsize - 1, static_cast<size_t>(str->Length())));
+ str->WriteOneByteV2(env->isolate,
+ 0,
+ length,
+ reinterpret_cast<uint8_t*>(buf),
+ v8::String::WriteFlags::kNullTerminate);
2457
if (result != nullptr) {
2458
- *result = copied;
+ *result = length;
2459
}
2460
} else if (result != nullptr) {
2461
*result = 0;
@@ -2479,12 +2479,12 @@ napi_status NAPI_CDECL napi_get_value_string_utf8(
2479
2480
2481
2482
2483
2484
2485
- *result = val.As<v8::String>()->Utf8LengthV2(env->isolate);
2486
+ *result = str->Utf8LengthV2(env->isolate);
2487
- auto str = val.As<v8::String>();
2488
size_t copied =
2489
str->WriteUtf8V2(env->isolate,
2490
buf,