Skip to content

Commit

Permalink
use std::basic_string_view to calc length in case of NAPI_AUTO_LENGTH
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielschulhof committed Jun 6, 2023
1 parent 29bf3ab commit cf6e959
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/js_native_api_v8.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1469,6 +1469,9 @@ napi_status NAPI_CDECL node_api_create_external_string_latin1(
return napi_create_string_latin1(env, str, length, result);
#else
return v8impl::NewString(env, str, length, result, [&](v8::Isolate* isolate) {
if (length == NAPI_AUTO_LENGTH) {
length = (std::string_view(str)).length();
}
auto resource = new v8impl::ExternalOneByteStringResource(str, length);
return v8::String::NewExternalOneByte(isolate, resource);
});
Expand All @@ -1486,6 +1489,9 @@ napi_status NAPI_CDECL node_api_create_external_string_utf16(
return napi_create_string_utf16(env, str, length, result);
#else
return v8impl::NewString(env, str, length, result, [&](v8::Isolate* isolate) {
if (length == NAPI_AUTO_LENGTH) {
length = (std::u16string_view(str)).length();
}
auto resource = new v8impl::ExternalStringResource(
reinterpret_cast<const uint16_t*>(str), length);
return v8::String::NewExternalTwoByte(isolate, resource);
Expand Down
5 changes: 5 additions & 0 deletions test/js-native-api/test_string/test_string.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
#include "../common.h"
#include "test_null.h"

enum length_mode {
own_length,
auto_length
};

static napi_status validate_and_retrieve_single_string_arg(
napi_env env, napi_callback_info info, napi_value* arg) {
size_t argc = 1;
Expand Down

0 comments on commit cf6e959

Please sign in to comment.