diff --git a/src/node_os.cc b/src/node_os.cc index f2b449ac0d93f7..c6c6b42028068e 100644 --- a/src/node_os.cc +++ b/src/node_os.cc @@ -260,7 +260,7 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo& args) { result.emplace_back(OneByteString(isolate, ip)); result.emplace_back(OneByteString(isolate, netmask)); result.emplace_back(family); - result.emplace_back(FIXED_ONE_BYTE_STRING(isolate, mac)); + result.emplace_back(OneByteString(isolate, mac.data(), mac.size() - 1)); result.emplace_back( Boolean::New(env->isolate(), interfaces[i].is_internal)); if (interfaces[i].address.address4.sin_family == AF_INET6) { diff --git a/src/util-inl.h b/src/util-inl.h index fbce06d7cef9c2..b55dc25b98c551 100644 --- a/src/util-inl.h +++ b/src/util-inl.h @@ -160,33 +160,34 @@ constexpr ContainerOfHelper ContainerOf(Inner Outer::*field, inline v8::Local OneByteString(v8::Isolate* isolate, const char* data, - int length) { - return v8::String::NewFromOneByte(isolate, - reinterpret_cast(data), - v8::NewStringType::kNormal, - length).ToLocalChecked(); + int length, + v8::NewStringType type) { + return v8::String::NewFromOneByte( + isolate, reinterpret_cast(data), type, length) + .ToLocalChecked(); } inline v8::Local OneByteString(v8::Isolate* isolate, const signed char* data, - int length) { - return v8::String::NewFromOneByte(isolate, - reinterpret_cast(data), - v8::NewStringType::kNormal, - length).ToLocalChecked(); + int length, + v8::NewStringType type) { + return v8::String::NewFromOneByte( + isolate, reinterpret_cast(data), type, length) + .ToLocalChecked(); } inline v8::Local OneByteString(v8::Isolate* isolate, const unsigned char* data, - int length) { - return v8::String::NewFromOneByte( - isolate, data, v8::NewStringType::kNormal, length) + int length, + v8::NewStringType type) { + return v8::String::NewFromOneByte(isolate, data, type, length) .ToLocalChecked(); } inline v8::Local OneByteString(v8::Isolate* isolate, - std::string_view str) { - return OneByteString(isolate, str.data(), str.size()); + std::string_view str, + v8::NewStringType type) { + return OneByteString(isolate, str.data(), str.size(), type); } char ToLower(char c) { diff --git a/src/util.h b/src/util.h index b6f49bcf8e7eab..62ee2fe3207505 100644 --- a/src/util.h +++ b/src/util.h @@ -331,21 +331,29 @@ class KVStore { }; // Convenience wrapper around v8::String::NewFromOneByte(). -inline v8::Local OneByteString(v8::Isolate* isolate, - const char* data, - int length = -1); +inline v8::Local OneByteString( + v8::Isolate* isolate, + const char* data, + int length = -1, + v8::NewStringType type = v8::NewStringType::kNormal); // For the people that compile with -funsigned-char. -inline v8::Local OneByteString(v8::Isolate* isolate, - const signed char* data, - int length = -1); +inline v8::Local OneByteString( + v8::Isolate* isolate, + const signed char* data, + int length = -1, + v8::NewStringType type = v8::NewStringType::kNormal); -inline v8::Local OneByteString(v8::Isolate* isolate, - const unsigned char* data, - int length = -1); +inline v8::Local OneByteString( + v8::Isolate* isolate, + const unsigned char* data, + int length = -1, + v8::NewStringType type = v8::NewStringType::kNormal); -inline v8::Local OneByteString(v8::Isolate* isolate, - std::string_view str); +inline v8::Local OneByteString( + v8::Isolate* isolate, + std::string_view str, + v8::NewStringType type = v8::NewStringType::kNormal); // Used to be a macro, hence the uppercase name. template @@ -353,15 +361,7 @@ template inline v8::Local FIXED_ONE_BYTE_STRING(v8::Isolate* isolate, const char (&data)[N]) { CHECK_EQ(data[N - 1], '\0'); - return OneByteString(isolate, data, N - 1); -} - -template - requires(N > 0) -inline v8::Local FIXED_ONE_BYTE_STRING( - v8::Isolate* isolate, const std::array& arr) { - CHECK_EQ(arr[N - 1], '\0'); - return OneByteString(isolate, arr.data(), N - 1); + return OneByteString(isolate, data, N - 1, v8::NewStringType::kInternalized); } // tolower() is locale-sensitive. Use ToLower() instead.