Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2020-12-13 23:43:40 +0300
committerAnna Henningsen <anna@addaleax.net>2020-12-14 18:50:23 +0300
commit67643e1c2ecc380a0d92550eb7ce2d283c8c6184 (patch)
tree82e0671534ff11c25dfc314962b0610183cc5d34 /src/node_messaging.cc
parent68b6c1a30d3a153bf9ba55f1fad477d78f4cf682 (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.cc5
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>();