aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2000-07-31 06:33:58 +0000
committerEli Zaretskii2000-07-31 06:33:58 +0000
commit16425c4a98ba4be9d7bc624d554b40785bdf7613 (patch)
tree5dd9c0baee19ed16e123f1f3541d1cd00f9ac4ed /src
parent74c07fafcf70857973e6ea82f249e3e7bc2827e4 (diff)
downloademacs-16425c4a98ba4be9d7bc624d554b40785bdf7613.tar.gz
emacs-16425c4a98ba4be9d7bc624d554b40785bdf7613.zip
(child_setup) [MSDOS]: malloc pwd_var instead of
using alloca; free it after run_msdos_command returns
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/callproc.c8
2 files changed, 18 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 7b9bcbbb4f6..228e5045b34 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12000-07-31 Eli Zaretskii <eliz@is.elta.co.il>
2
3 * msdos.c (run_msdos_command): Save and restore the master
4 environment, for the case that child_setup signals an error.
5 When mirroring slashes in DOS shell commands, don't fail when
6 argv[2] has embedded blanks.
7
8 * callproc.c (child_setup) [MSDOS]: malloc pwd_var instead of
9 using alloca; free it after run_msdos_command returns.
10
12000-07-27 Dave Love <fx@gnu.org> 112000-07-27 Dave Love <fx@gnu.org>
2 12
3 * s/irix6-5.h (IRIX_FORCE_32_BITS, LD_SWITCH_SYSTEM): Don't 13 * s/irix6-5.h (IRIX_FORCE_32_BITS, LD_SWITCH_SYSTEM): Don't
diff --git a/src/callproc.c b/src/callproc.c
index 16ae6ada73c..a79816b2f38 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1072,7 +1072,14 @@ child_setup (in, out, err, new_argv, set_pgrp, current_dir)
1072 register int i; 1072 register int i;
1073 1073
1074 i = STRING_BYTES (XSTRING (current_dir)); 1074 i = STRING_BYTES (XSTRING (current_dir));
1075#ifdef MSDOS
1076 /* MSDOS must have all environment variables malloc'ed, because
1077 low-level libc functions that launch subsidiary processes rely
1078 on that. */
1079 pwd_var = (char *) xmalloc (i + 6);
1080#else
1075 pwd_var = (char *) alloca (i + 6); 1081 pwd_var = (char *) alloca (i + 6);
1082#endif
1076 temp = pwd_var + 4; 1083 temp = pwd_var + 4;
1077 bcopy ("PWD=", pwd_var, 4); 1084 bcopy ("PWD=", pwd_var, 4);
1078 bcopy (XSTRING (current_dir)->data, temp, i); 1085 bcopy (XSTRING (current_dir)->data, temp, i);
@@ -1212,6 +1219,7 @@ child_setup (in, out, err, new_argv, set_pgrp, current_dir)
1212 1219
1213#ifdef MSDOS 1220#ifdef MSDOS
1214 pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env); 1221 pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env);
1222 free (pwd_var);
1215 if (pid == -1) 1223 if (pid == -1)
1216 /* An error occurred while trying to run the subprocess. */ 1224 /* An error occurred while trying to run the subprocess. */
1217 report_file_error ("Spawning child process", Qnil); 1225 report_file_error ("Spawning child process", Qnil);