|
@@ -55,11 +55,12 @@ struct V8FunctionInvoker<v8::Local<v8::Value>(ArgTypes...)> {
|
|
|
v8::Local<v8::Context> context = holder->CreationContext();
|
|
|
v8::Context::Scope context_scope(context);
|
|
|
std::vector<v8::Local<v8::Value>> args{ConvertToV8(isolate, raw)...};
|
|
|
- v8::Local<v8::Value> ret(holder
|
|
|
- ->Call(context, holder, args.size(),
|
|
|
- args.empty() ? nullptr : &args.front())
|
|
|
- .ToLocalChecked());
|
|
|
- return handle_scope.Escape(ret);
|
|
|
+ v8::MaybeLocal<v8::Value> ret = holder->Call(
|
|
|
+ context, holder, args.size(), args.empty() ? nullptr : &args.front());
|
|
|
+ if (ret.IsEmpty())
|
|
|
+ return v8::Undefined(isolate);
|
|
|
+ else
|
|
|
+ return handle_scope.Escape(ret.ToLocalChecked());
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -81,7 +82,7 @@ struct V8FunctionInvoker<void(ArgTypes...)> {
|
|
|
holder
|
|
|
->Call(context, holder, args.size(),
|
|
|
args.empty() ? nullptr : &args.front())
|
|
|
- .ToLocalChecked();
|
|
|
+ .IsEmpty();
|
|
|
}
|
|
|
};
|
|
|
|