Index: trunk/src/emx/src/lib/process/execl.c
===================================================================
--- trunk/src/emx/src/lib/process/execl.c	(revision 398)
+++ trunk/src/emx/src/lib/process/execl.c	(revision 403)
@@ -8,13 +8,9 @@
 int _STD(execl) (const char *name, const char *arg0, ...)
 {
-  va_list arg_ptr;
   int result;
 
-  va_start (arg_ptr, name);
+  /* Note: Passing `arg0' to spawnv() is not portable. */
 
-  /* Note: Passing `arg_ptr' to spawnv() is not portable. */
-
-  result = spawnv (P_OVERLAY, name, (char * const *)arg_ptr);
-  va_end (arg_ptr);
+  result = spawnv (P_OVERLAY, name, &arg0);
   return result;
 }
Index: trunk/src/emx/src/lib/process/execle.c
===================================================================
--- trunk/src/emx/src/lib/process/execle.c	(revision 398)
+++ trunk/src/emx/src/lib/process/execle.c	(revision 403)
@@ -17,10 +17,8 @@
   env_ptr = va_arg (arg_ptr, char * const *);
   va_end (arg_ptr);
-  va_start (arg_ptr, name);
 
-  /* Note: Passing `arg_ptr' to spawnve() is not portable. */
+  /* Note: Passing `&arg0' to spawnve() is not portable. */
 
-  result = spawnve (P_OVERLAY, name, (char * const *)arg_ptr, env_ptr);
-  va_end (arg_ptr);
+  result = spawnve (P_OVERLAY, name, &arg0, env_ptr);
   return result;
 }
Index: trunk/src/emx/src/lib/process/execlp.c
===================================================================
--- trunk/src/emx/src/lib/process/execlp.c	(revision 398)
+++ trunk/src/emx/src/lib/process/execlp.c	(revision 403)
@@ -8,13 +8,9 @@
 int _STD(execlp) (const char *name, const char *arg0, ...)
 {
-  va_list arg_ptr;
   int result;
 
-  va_start (arg_ptr, name);
+  /* Note: Passing `&arg0' to spawnvp() is not portable. */
 
-  /* Note: Passing `arg_ptr' to spawnvp() is not portable. */
-
-  result = spawnvp (P_OVERLAY, name, (char * const *)arg_ptr);
-  va_end (arg_ptr);
+  result = spawnvp (P_OVERLAY, name, &arg0);
   return result;
 }
Index: trunk/src/emx/src/lib/process/execlpe.c
===================================================================
--- trunk/src/emx/src/lib/process/execlpe.c	(revision 398)
+++ trunk/src/emx/src/lib/process/execlpe.c	(revision 403)
@@ -17,10 +17,8 @@
   env_ptr = va_arg (arg_ptr, char * const *);
   va_end (arg_ptr);
-  va_start (arg_ptr, name);
 
-  /* Note: Passing `arg_ptr' to spawnvpe() is not portable. */
+  /* Note: Passing `&arg0' to spawnvpe() is not portable. */
 
-  result = spawnvpe (P_OVERLAY, name, (char * const *)arg_ptr, env_ptr);
-  va_end (arg_ptr);
+  result = spawnvpe (P_OVERLAY, name, &arg0, env_ptr);
   return result;
 }
Index: trunk/src/emx/src/lib/process/spawnl.c
===================================================================
--- trunk/src/emx/src/lib/process/spawnl.c	(revision 398)
+++ trunk/src/emx/src/lib/process/spawnl.c	(revision 403)
@@ -8,13 +8,9 @@
 int _STD(spawnl) (int mode, const char *name, const char *arg0, ...)
 {
-  va_list arg_ptr;
   int result;
 
-  va_start (arg_ptr, name);
+  /* Note: Passing `&arg0' to spawnv() is not portable. */
 
-  /* Note: Passing `arg_ptr' to spawnv() is not portable. */
-
-  result = spawnv (mode, name, (char * const *)arg_ptr);
-  va_end (arg_ptr);
+  result = spawnv (mode, name, &arg0);
   return result;
 }
Index: trunk/src/emx/src/lib/process/spawnle.c
===================================================================
--- trunk/src/emx/src/lib/process/spawnle.c	(revision 398)
+++ trunk/src/emx/src/lib/process/spawnle.c	(revision 403)
@@ -17,10 +17,8 @@
   env_ptr = va_arg (arg_ptr, char * const *);
   va_end (arg_ptr);
-  va_start (arg_ptr, name);
 
-  /* Note: Passing `arg_ptr' to spawnve() is not portable. */
+  /* Note: Passing `&arg0' to spawnve() is not portable. */
 
-  result = spawnve (mode, name, (char * const *)arg_ptr, env_ptr);
-  va_end (arg_ptr);
+  result = spawnve (mode, name, &arg0, env_ptr);
   return result;
 }
Index: trunk/src/emx/src/lib/process/spawnlp.c
===================================================================
--- trunk/src/emx/src/lib/process/spawnlp.c	(revision 398)
+++ trunk/src/emx/src/lib/process/spawnlp.c	(revision 403)
@@ -8,13 +8,9 @@
 int _STD(spawnlp) (int mode, const char *name, const char *arg0, ...)
 {
-  va_list arg_ptr;
   int result;
 
-  va_start (arg_ptr, name);
+  /* Note: Passing `&arg0' to spawnvp() is not portable. */
 
-  /* Note: Passing `arg_ptr' to spawnvp() is not portable. */
-
-  result = spawnvp (mode, name, (char * const *)arg_ptr);
-  va_end (arg_ptr);
+  result = spawnvp (mode, name, &arg0);
   return result;
 }
Index: trunk/src/emx/src/lib/process/spawnlpe.c
===================================================================
--- trunk/src/emx/src/lib/process/spawnlpe.c	(revision 398)
+++ trunk/src/emx/src/lib/process/spawnlpe.c	(revision 403)
@@ -17,10 +17,8 @@
   env_ptr = va_arg (arg_ptr, char * const *);
   va_end (arg_ptr);
-  va_start (arg_ptr, name);
 
-  /* Note: Passing `arg_ptr' to spawnvpe() is not portable. */
+  /* Note: Passing `&arg0' to spawnvpe() is not portable. */
 
-  result = spawnvpe (mode, name, (char * const *)arg_ptr, env_ptr);
-  va_end (arg_ptr);
+  result = spawnvpe (mode, name, &arg0, env_ptr);
   return result;
 }
