diff --git a/src/string_bytes.cc b/src/string_bytes.cc index 7b07c6b7da..c828363da6 100644 --- a/src/string_bytes.cc +++ b/src/string_bytes.cc @@ -28,8 +28,7 @@ class ExternString: public ResourceType { public: ~ExternString() override { delete[] data_; - int64_t change_in_bytes = -static_cast(length_); - isolate()->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); + isolate()->AdjustAmountOfExternalAllocatedMemory(-byte_length()); } const TypeName* data() const override { @@ -40,6 +39,10 @@ class ExternString: public ResourceType { return length_; } + int64_t byte_length() const { + return length() * sizeof(*data()); + } + static Local NewFromCopy(Isolate* isolate, const TypeName* data, size_t length) { @@ -69,7 +72,7 @@ class ExternString: public ResourceType { data, length); Local str = String::NewExternal(isolate, h_str); - isolate->AdjustAmountOfExternalAllocatedMemory(length); + isolate->AdjustAmountOfExternalAllocatedMemory(h_str->byte_length()); return scope.Escape(str); }