diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-02-19 00:58:27 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-02-25 04:01:11 +0300 |
commit | 84e02b178ad14fae0df2a514e8a39bfa50ffdc2d (patch) | |
tree | ddc0435b6bd0b7811e0bf47687777c56b2857fd0 /src/node_serdes.cc | |
parent | 6c257cdf271384555d0ced77104a1d6b0480e246 (diff) |
src: allocate Buffer memory using ArrayBuffer allocator
Always use the right allocator for memory that is turned into
an `ArrayBuffer` at a later point.
This enables embedders to use their own `ArrayBuffer::Allocator`s,
and is inspired by Electron’s electron/node@f61bae3440e. It should
render their downstream patch unnecessary.
Refs: https://github.com/electron/node/commit/f61bae3440e1bfcc83bba6ff0785adfb89b4045e
PR-URL: https://github.com/nodejs/node/pull/26207
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Diffstat (limited to 'src/node_serdes.cc')
-rw-r--r-- | src/node_serdes.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/node_serdes.cc b/src/node_serdes.cc index ab3fca7efb0..12ed313b033 100644 --- a/src/node_serdes.cc +++ b/src/node_serdes.cc @@ -200,10 +200,13 @@ void SerializerContext::ReleaseBuffer(const FunctionCallbackInfo<Value>& args) { SerializerContext* ctx; ASSIGN_OR_RETURN_UNWRAP(&ctx, args.Holder()); + // Note: Both ValueSerializer and this Buffer::New() variant use malloc() + // as the underlying allocator. std::pair<uint8_t*, size_t> ret = ctx->serializer_.Release(); auto buf = Buffer::New(ctx->env(), reinterpret_cast<char*>(ret.first), - ret.second); + ret.second, + true /* uses_malloc */); if (!buf.IsEmpty()) { args.GetReturnValue().Set(buf.ToLocalChecked()); |