From 3b639868cedb7e5af9440c6b85dc73bd56187e10 Mon Sep 17 00:00:00 2001 From: Karl Heuer Date: Fri, 18 Mar 1994 00:12:41 +0000 Subject: [PATCH] (Fstart_process): GCPRO some things. --- src/process.c | 25 +++++++++++++++---------- 1 file 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); -- 2.39.5