diff options
| author | Eli Zaretskii | 2000-07-31 06:33:58 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2000-07-31 06:33:58 +0000 |
| commit | 16425c4a98ba4be9d7bc624d554b40785bdf7613 (patch) | |
| tree | 5dd9c0baee19ed16e123f1f3541d1cd00f9ac4ed /src | |
| parent | 74c07fafcf70857973e6ea82f249e3e7bc2827e4 (diff) | |
| download | emacs-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/ChangeLog | 10 | ||||
| -rw-r--r-- | src/callproc.c | 8 |
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 @@ | |||
| 1 | 2000-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 | |||
| 1 | 2000-07-27 Dave Love <fx@gnu.org> | 11 | 2000-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); |