@@ -569,26 +569,30 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) { |
569 | 569 | } |
570 | 570 | } |
571 | 571 | #endif // NODE_WITHOUT_NODE_OPTIONS |
572 | | - } |
573 | 572 |
|
574 | | - if (args[2]->IsArray()) { |
575 | | - Local<Array> array = args[2].As<Array>(); |
576 | 573 | // The first argument is reserved for program name, but we don't need it |
577 | 574 | // in workers. |
578 | 575 | std::vector<std::string> exec_argv = {""}; |
579 | | - uint32_t length = array->Length(); |
580 | | - for (uint32_t i = 0; i < length; i++) { |
581 | | - Local<Value> arg; |
582 | | - if (!array->Get(env->context(), i).ToLocal(&arg)) { |
583 | | - return; |
584 | | - } |
585 | | - Local<String> arg_v8; |
586 | | - if (!arg->ToString(env->context()).ToLocal(&arg_v8)) { |
587 | | - return; |
| 576 | + if (args[2]->IsArray()) { |
| 577 | + Local<Array> array = args[2].As<Array>(); |
| 578 | + uint32_t length = array->Length(); |
| 579 | + for (uint32_t i = 0; i < length; i++) { |
| 580 | + Local<Value> arg; |
| 581 | + if (!array->Get(env->context(), i).ToLocal(&arg)) { |
| 582 | + return; |
| 583 | + } |
| 584 | + Local<String> arg_v8; |
| 585 | + if (!arg->ToString(env->context()).ToLocal(&arg_v8)) { |
| 586 | + return; |
| 587 | + } |
| 588 | + Utf8Value arg_utf8_value(args.GetIsolate(), arg_v8); |
| 589 | + std::string arg_string(arg_utf8_value.out(), arg_utf8_value.length()); |
| 590 | + exec_argv.push_back(arg_string); |
588 | 591 | } |
589 | | - Utf8Value arg_utf8_value(args.GetIsolate(), arg_v8); |
590 | | - std::string arg_string(arg_utf8_value.out(), arg_utf8_value.length()); |
591 | | - exec_argv.push_back(arg_string); |
| 592 | + } else { |
| 593 | + exec_argv_out = env->exec_argv(); |
| 594 | + exec_argv.insert( |
| 595 | + exec_argv.end(), exec_argv_out.begin(), exec_argv_out.end()); |
592 | 596 | } |
593 | 597 |
|
594 | 598 | std::vector<std::string> invalid_args{}; |
@@ -606,9 +610,8 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) { |
606 | 610 | invalid_args.erase(invalid_args.begin()); |
607 | 611 | if (errors.size() > 0 || invalid_args.size() > 0) { |
608 | 612 | Local<Value> error; |
609 | | - if (!ToV8Value(env->context(), |
610 | | - errors.size() > 0 ? errors : invalid_args) |
611 | | - .ToLocal(&error)) { |
| 613 | + if (!ToV8Value(env->context(), errors.size() > 0 ? errors : invalid_args) |
| 614 | + .ToLocal(&error)) { |
612 | 615 | return; |
613 | 616 | } |
614 | 617 | Local<String> key = |
|