diff options
author | Anna Henningsen <anna@addaleax.net> | 2020-12-13 23:43:40 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2020-12-14 18:50:23 +0300 |
commit | 67643e1c2ecc380a0d92550eb7ce2d283c8c6184 (patch) | |
tree | 82e0671534ff11c25dfc314962b0610183cc5d34 /src/node_messaging.cc | |
parent | 68b6c1a30d3a153bf9ba55f1fad477d78f4cf682 (diff) |
worker: fix broadcast channel SharedArrayBuffer passing
Make sure that `SharedArrayBuffer`s can be deserialized on multiple
receiving ends. As a drive-by, also fix the condition of the
internal assertion that should occur if there are transferables
passed to multiple destinations.
PR-URL: https://github.com/nodejs/node/pull/36501
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/node_messaging.cc')
-rw-r--r-- | src/node_messaging.cc | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/node_messaging.cc b/src/node_messaging.cc index 03c6d5aaa76..5f054c41c8e 100644 --- a/src/node_messaging.cc +++ b/src/node_messaging.cc @@ -157,8 +157,7 @@ MaybeLocal<Value> Message::Deserialize(Environment* env, // Attach all transferred SharedArrayBuffers to their new Isolate. for (uint32_t i = 0; i < shared_array_buffers_.size(); ++i) { Local<SharedArrayBuffer> sab = - SharedArrayBuffer::New(env->isolate(), - std::move(shared_array_buffers_[i])); + SharedArrayBuffer::New(env->isolate(), shared_array_buffers_[i]); shared_array_buffers.push_back(sab); } @@ -1309,7 +1308,7 @@ Maybe<bool> SiblingGroup::Dispatch( // Transferables cannot be used when there is more // than a single destination. - if (size() > 2 && message->transferables().size()) { + if (size() > 2 && message->has_transferables()) { if (error != nullptr) *error = "Transferables cannot be used with multiple destinations."; return Nothing<bool>(); |