worker: handle exception when creating execArgv errors
Handle possible JS exceptions that can occur by returning to JS land immediately. The motivation for this change is that `USE(….FromJust());` is an anti-pattern, and `.FromJust()` with an unused return value is superseded by `.Check()`. However, in this case, checking that the operation succeeded is not necessary. Refs: https://github.com/nodejs/node/pull/27162 PR-URL: https://github.com/nodejs/node/pull/27245 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
652877e3a9
commit
002dacb7f7
@ -459,13 +459,17 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) {
|
||||
// The first argument is program name.
|
||||
invalid_args.erase(invalid_args.begin());
|
||||
if (errors.size() > 0 || invalid_args.size() > 0) {
|
||||
v8::Local<v8::Value> error =
|
||||
ToV8Value(env->context(),
|
||||
errors.size() > 0 ? errors : invalid_args)
|
||||
.ToLocalChecked();
|
||||
v8::Local<v8::Value> error;
|
||||
if (!ToV8Value(env->context(),
|
||||
errors.size() > 0 ? errors : invalid_args)
|
||||
.ToLocal(&error)) {
|
||||
return;
|
||||
}
|
||||
Local<String> key =
|
||||
FIXED_ONE_BYTE_STRING(env->isolate(), "invalidExecArgv");
|
||||
USE(args.This()->Set(env->context(), key, error).FromJust());
|
||||
// Ignore the return value of Set() because exceptions bubble up to JS
|
||||
// when we return anyway.
|
||||
USE(args.This()->Set(env->context(), key, error));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user