GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — src: fixup node_messaging error handling · nodejs/node@44c2465

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • src
    • node_messaging.cc
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/node_messaging.cc‎

Copy file name to clipboardExpand all lines: src/node_messaging.cc
+28-13Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ class SerializerDelegate : public ValueSerializer::Delegate {
328328
if (JSTransferable::IsJSTransferable(env_, context_, object)) {
329329
BaseObjectPtr<JSTransferable> js_transferable =
330330
JSTransferable::Wrap(env_, object);
331+
if (!js_transferable) return Nothing<bool>();
331332
return WriteHostObject(js_transferable);
332333
}
333334

@@ -550,6 +551,7 @@ Maybe<bool> Message::Serialize(Environment* env,
550551
return Nothing<bool>();
551552
}
552553
host_object = JSTransferable::Wrap(env, entry);
554+
if (!host_object) return Nothing<bool>();
553555
}
554556

555557
if (env->message_port_constructor_template()->HasInstance(entry) &&
@@ -1245,27 +1247,38 @@ Local<FunctionTemplate> GetMessagePortConstructorTemplate(
12451247
BaseObjectPtr<JSTransferable> JSTransferable::Wrap(Environment* env,
12461248
Local<Object> target) {
12471249
Local<Context> context = env->context();
1248-
Local<Value> wrapper_val =
1249-
target->GetPrivate(context, env->js_transferable_wrapper_private_symbol())
1250-
.ToLocalChecked();
1250+
Local<Value> wrapper_val;
1251+
if (!target
1252+
->GetPrivate(context, env->js_transferable_wrapper_private_symbol())
1253+
.ToLocal(&wrapper_val)) {
1254+
return {};
1255+
}
12511256
DCHECK(wrapper_val->IsObject() || wrapper_val->IsUndefined());
12521257
BaseObjectPtr<JSTransferable> wrapper;
12531258
if (wrapper_val->IsObject()) {
12541259
wrapper =
12551260
BaseObjectPtr<JSTransferable>{Unwrap<JSTransferable>(wrapper_val)};
12561261
} else {
1257-
Local<Object> wrapper_obj = env->js_transferable_constructor_template()
1258-
->GetFunction(context)
1259-
.ToLocalChecked()
1260-
->NewInstance(context)
1261-
.ToLocalChecked();
1262+
Local<Function> ctor;
1263+
if (!env->js_transferable_constructor_template()
1264+
->GetFunction(context)
1265+
.ToLocal(&ctor)) {
1266+
return {};
1267+
}
1268+
Local<Object> wrapper_obj;
1269+
if (!ctor->NewInstance(context).ToLocal(&wrapper_obj)) {
1270+
return {};
1271+
}
12621272
// Make sure the JSTransferable wrapper object is not garbage collected
12631273
// until the strong BaseObjectPtr's reference count is decreased to 0.
12641274
wrapper = MakeDetachedBaseObject<JSTransferable>(env, wrapper_obj, target);
1265-
target
1266-
->SetPrivate(
1267-
context, env->js_transferable_wrapper_private_symbol(), wrapper_obj)
1268-
.ToChecked();
1275+
if (target
1276+
->SetPrivate(context,
1277+
env->js_transferable_wrapper_private_symbol(),
1278+
wrapper_obj)
1279+
.IsNothing()) {
1280+
return {};
1281+
}
12691282
}
12701283
return wrapper;
12711284
}
@@ -1396,7 +1409,9 @@ Maybe<BaseObjectPtrList> JSTransferable::NestedTransferables() const {
13961409
if (!JSTransferable::IsJSTransferable(env(), context, obj)) {
13971410
continue;
13981411
}
1399-
ret.emplace_back(JSTransferable::Wrap(env(), obj));
1412+
auto wrapped = JSTransferable::Wrap(env(), obj);
1413+
if (!wrapped) return Nothing<BaseObjectPtrList>();
1414+
ret.emplace_back(wrapped);
14001415
}
14011416
return Just(ret);
14021417
}

0 commit comments

Comments
0 (0)
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.