# HG changeset patch
# User Eli Zaretskii <eliz@gnu.org>
# Date 965024969 0
# Node ID 861a1460eba695a97cb2ef86a14f017f30922bae
# Parent  788ce16426e377e0c769783a5c9064107d780837
(child_setup) [MSDOS]: malloc pwd_var instead of
using alloca; free it after run_msdos_command returns

diff -r 788ce16426e3 -r 861a1460eba6 src/callproc.c
--- a/src/callproc.c	Mon Jul 31 06:24:21 2000 +0000
+++ b/src/callproc.c	Mon Jul 31 06:29:29 2000 +0000
@@ -1072,7 +1072,14 @@
     register int i;
 
     i = STRING_BYTES (XSTRING (current_dir));
+#ifdef MSDOS
+    /* MSDOS must have all environment variables malloc'ed, because
+       low-level libc functions that launch subsidiary processes rely
+       on that.  */
+    pwd_var = (char *) xmalloc (i + 6);
+#else
     pwd_var = (char *) alloca (i + 6);
+#endif
     temp = pwd_var + 4;
     bcopy ("PWD=", pwd_var, 4);
     bcopy (XSTRING (current_dir)->data, temp, i);
@@ -1212,6 +1219,7 @@
 
 #ifdef MSDOS
   pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env);
+  free (pwd_var);
   if (pid == -1)
     /* An error occurred while trying to run the subprocess.  */
     report_file_error ("Spawning child process", Qnil);