From 69d4597af9135f592a22ccf0c6df387ccd27da20 Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Wed, 14 May 2025 11:09:48 +0100 Subject: [PATCH] node-api: use WriteOneByteV2 in napi_get_value_string_latin1 --- src/js_native_api_v8.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 8f97ca4d9cbb84..9f1d4916e38bd2 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -2441,21 +2441,21 @@ napi_status NAPI_CDECL napi_get_value_string_latin1( v8::Local val = v8impl::V8LocalValueFromJsValue(value); RETURN_STATUS_IF_FALSE(env, val->IsString(), napi_string_expected); + v8::Local str = val.As(); if (!buf) { CHECK_ARG(env, result); - *result = val.As()->Length(); + *result = str->Length(); } else if (bufsize != 0) { - int copied = - val.As()->WriteOneByte(env->isolate, - reinterpret_cast(buf), - 0, - bufsize - 1, - v8::String::NO_NULL_TERMINATION); - - buf[copied] = '\0'; + uint32_t length = static_cast( + std::min(bufsize - 1, static_cast(str->Length()))); + str->WriteOneByteV2(env->isolate, + 0, + length, + reinterpret_cast(buf), + v8::String::WriteFlags::kNullTerminate); if (result != nullptr) { - *result = copied; + *result = length; } } else if (result != nullptr) { *result = 0; @@ -2479,12 +2479,12 @@ napi_status NAPI_CDECL napi_get_value_string_utf8( v8::Local val = v8impl::V8LocalValueFromJsValue(value); RETURN_STATUS_IF_FALSE(env, val->IsString(), napi_string_expected); + v8::Local str = val.As(); if (!buf) { CHECK_ARG(env, result); - *result = val.As()->Utf8LengthV2(env->isolate); + *result = str->Utf8LengthV2(env->isolate); } else if (bufsize != 0) { - auto str = val.As(); size_t copied = str->WriteUtf8V2(env->isolate, buf,