src: simplify MessagePort construction code a bit

Using `ASSIGN_OR_RETURN_UNWRAP` would return if the
created `MessagePort` object had no internal fields.
That would be a bug, so switch to a checked conversion instead.

PR-URL: https://github.com/nodejs/node/pull/23036
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
Anna Henningsen 2018-09-23 19:26:30 +02:00
parent 3ea05883c8
commit d102a85cd9
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9

View File

@ -483,14 +483,14 @@ MessagePort* MessagePort::New(
Local<Function> ctor;
if (!GetMessagePortConstructor(env, context).ToLocal(&ctor))
return nullptr;
MessagePort* port = nullptr;
// Construct a new instance, then assign the listener instance and possibly
// the MessagePortData to it.
Local<Object> instance;
if (!ctor->NewInstance(context).ToLocal(&instance))
return nullptr;
ASSIGN_OR_RETURN_UNWRAP(&port, instance, nullptr);
MessagePort* port = Unwrap<MessagePort>(instance);
CHECK_NOT_NULL(port);
if (data) {
port->Detach();
port->data_ = std::move(data);