@@ -111,28 +111,27 @@ const MAX_BUFFER = 1024 * 1024;
111111 *   }} [options] 
112112 * @returns  {ChildProcess } 
113113 */ 
114- function  fork ( modulePath   /*  , args, options */ )  { 
114+ function  fork ( modulePath ,  args   =   [ ] ,  options )  { 
115115  modulePath  =  getValidatedPath ( modulePath ,  'modulePath' ) ; 
116116
117117  // Get options and args arguments. 
118118  let  execArgv ; 
119-   let  options  =  { } ; 
120-   let  args  =  [ ] ; 
121-   let  pos  =  1 ; 
122-   if  ( pos  <  arguments . length  &&  ArrayIsArray ( arguments [ pos ] ) )  { 
123-     args  =  arguments [ pos ++ ] ; 
124-   } 
125119
126-   if  ( pos  <  arguments . length  &&  arguments [ pos ]  ==  null )  { 
127-     pos ++ ; 
120+   if  ( args  ==  null )  { 
121+     args  =  [ ] ; 
122+   }  else  if  ( typeof  args  !==  'object' )  { 
123+     throw  new  ERR_INVALID_ARG_VALUE ( 'args' ,  args ) ; 
124+   }  else  if  ( ! ArrayIsArray ( args ) )  { 
125+     options  =  args ; 
126+     args  =  [ ] ; 
128127  } 
129128
130-   if  ( pos   <   arguments . length   &&   arguments [ pos ]   ! =null )  { 
131-     if   ( typeof   arguments [ pos ]   !==   'object' )   { 
132-        throw   new   ERR_INVALID_ARG_VALUE ( `arguments[ ${ pos } ]` ,   arguments [ pos ] ) ; 
133-     } 
134- 
135-     options  =  {  ...arguments [ pos ++ ]  } ; 
129+   if  ( options   = =null )  { 
130+     options   =   { } ; 
131+   }   else   if   ( typeof   options   !==   'object' )   { 
132+     throw   new   ERR_INVALID_ARG_VALUE ( 'options' ,   options ) ; 
133+    }   else   { 
134+     options  =  {  ...options  } ; 
136135  } 
137136
138137  // Prepare arguments for fork: 
@@ -276,31 +275,34 @@ ObjectDefineProperty(exec, promisify.custom, {
276275 *   ) => any} [callback] 
277276 * @returns  {ChildProcess } 
278277 */ 
279- function  execFile ( file  /* , args, options, callback */ )  { 
280-   let  args  =  [ ] ; 
281-   let  callback ; 
282-   let  options ; 
283- 
284-   // Parse the optional positional parameters. 
285-   let  pos  =  1 ; 
286-   if  ( pos  <  arguments . length  &&  ArrayIsArray ( arguments [ pos ] ) )  { 
287-     args  =  arguments [ pos ++ ] ; 
288-   }  else  if  ( pos  <  arguments . length  &&  arguments [ pos ]  ==  null )  { 
289-     pos ++ ; 
290-   } 
291- 
292-   if  ( pos  <  arguments . length  &&  typeof  arguments [ pos ]  ===  'object' )  { 
293-     options  =  arguments [ pos ++ ] ; 
294-   }  else  if  ( pos  <  arguments . length  &&  arguments [ pos ]  ==  null )  { 
295-     pos ++ ; 
278+ function  execFile ( file ,  args  =  [ ] ,  options ,  callback )  { 
279+   if  ( args  ==  null )  { 
280+     args  =  [ ] ; 
281+   }  else  if  ( typeof  args  ===  'object' )  { 
282+     if  ( ! ArrayIsArray ( args ) )  { 
283+       callback  =  options ; 
284+       options  =  args ; 
285+       args  =  [ ] ; 
286+     } 
287+   }  else  if  ( typeof  args  ===  'function' )  { 
288+     callback  =  args ; 
289+     options  =  { } ; 
290+     args  =  [ ] ; 
291+   }  else  { 
292+     throw  new  ERR_INVALID_ARG_VALUE ( 'args' ,  args ) ; 
296293  } 
297294
298-   if  ( pos  <  arguments . length  &&  typeof  arguments [ pos ]  ===  'function' )  { 
299-     callback  =  arguments [ pos ++ ] ; 
295+   if  ( options  ==  null )  { 
296+     options  =  { } ; 
297+   }  else  if  ( typeof  options  ===  'function' )  { 
298+     callback  =  options ; 
299+     options  =  { } ; 
300+   }  else  if  ( typeof  options  !==  'object' )  { 
301+     throw  new  ERR_INVALID_ARG_VALUE ( 'options' ,  options ) ; 
300302  } 
301303
302-   if  ( ! callback  &&  pos   <   arguments . length   &&   arguments [ pos ]   !=   null )  { 
303-     throw  new  ERR_INVALID_ARG_VALUE ( 'args ' ,  arguments [ pos ] ) ; 
304+   if  ( callback  &&  typeof   callback   !==   'function' )  { 
305+     throw  new  ERR_INVALID_ARG_VALUE ( 'callback ' ,  callback ) ; 
304306  } 
305307
306308  options  =  { 
0 commit comments