summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-03-18 00:12:41 +0000
committerKarl Heuer <kwzh@gnu.org>1994-03-18 00:12:41 +0000
commit3b639868cedb7e5af9440c6b85dc73bd56187e10 (patch)
treea0f452ea42c6f107d93a55d91624337726155433 /src
parent5458f7f15818ccc49685ec9ac4e0195d77bb3fcf (diff)
downloademacs-3b639868cedb7e5af9440c6b85dc73bd56187e10.tar.gz
(Fstart_process): GCPRO some things.
Diffstat (limited to 'src')
-rw-r--r--src/process.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/process.c b/src/process.c
index 1c1ac73e9f9..6e9da96bf07 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1024,24 +1024,29 @@ Remaining arguments are strings to give program as arguments.")
#else /* not VMS */
new_argv = (unsigned char **) alloca ((nargs - 1) * sizeof (char *));
- for (i = 3; i < nargs; i++)
- {
- tem = args[i];
- CHECK_STRING (tem, i);
- new_argv[i - 2] = XSTRING (tem)->data;
- }
- new_argv[i - 2] = 0;
- new_argv[0] = XSTRING (program)->data;
-
/* If program file name is not absolute, search our path for it */
- if (new_argv[0][0] != '/')
+ if (XSTRING (program)->data[0] != '/')
{
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+
tem = Qnil;
+ GCPRO4 (name, program, buffer, current_dir);
openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 1);
+ UNGCPRO;
if (NILP (tem))
report_file_error ("Searching for program", Fcons (program, Qnil));
new_argv[0] = XSTRING (tem)->data;
}
+ else
+ new_argv[0] = XSTRING (program)->data;
+
+ for (i = 3; i < nargs; i++)
+ {
+ tem = args[i];
+ CHECK_STRING (tem, i);
+ new_argv[i - 2] = XSTRING (tem)->data;
+ }
+ new_argv[i - 2] = 0;
#endif /* not VMS */
proc = make_process (name);