diff --git a/lib/child_process.js b/lib/child_process.js index 3736bc49ae61a5..d9be79925850b4 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -19,15 +19,20 @@ const ChildProcess = exports.ChildProcess = child_process.ChildProcess; exports.fork = function(modulePath /*, args, options*/) { // Get options and args arguments. - var options, args, execArgv; - if (Array.isArray(arguments[1])) { - args = arguments[1]; - options = util._extend({}, arguments[2]); - } else if (arguments[1] && typeof arguments[1] !== 'object') { - throw new TypeError('Incorrect value of args option'); - } else { - args = []; - options = util._extend({}, arguments[1]); + var execArgv; + var options = {}; + var args = []; + var pos = 1; + if (Array.isArray(arguments[pos])) { + args = arguments[pos++]; + } + + if (arguments[pos] != null) { + if (typeof arguments[pos] !== 'object') { + throw new TypeError('Incorrect value of args option'); + } else { + options = util._extend({}, arguments[pos++]); + } } // Prepare arguments for fork: @@ -132,7 +137,7 @@ exports.execFile = function(file /*, args, options, callback*/) { callback = arguments[pos++]; } - if (pos === 1 && arguments.length > 1) { + if (!callback && arguments[pos] != null) { throw new TypeError('Incorrect value of args option'); }