From 12d8b6ab59c4a70a7af46361dc4ff05308982a54 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 19 Mar 2011 20:07:54 -0700 Subject: [PATCH] * process.c (create_process): Use 'volatile' to avoid vfork clobbering. --- src/ChangeLog | 1 + src/process.c | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 041d4b21754..bc306f20578 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -8,6 +8,7 @@ (Fnetwork_interface_info): Fix pointer signedness. (process_send_signal): Add cast to avoid pointer signedness problem. (FIRST_PROC_DESC, IF_NON_BLOCKING_CONNECT): Remove unused macros. + (create_process): Use 'volatile' to avoid vfork clobbering. 2011-03-19 Paul Eggert diff --git a/src/process.c b/src/process.c index 5bc1707756b..5ee731a5bd3 100644 --- a/src/process.c +++ b/src/process.c @@ -1912,8 +1912,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) /* child_setup must clobber environ on systems with true vfork. Protect it from permanent change. */ char **save_environ = environ; - - current_dir = ENCODE_FILE (current_dir); + volatile Lisp_Object encoded_current_dir = ENCODE_FILE (current_dir); #ifndef WINDOWSNT pid = vfork (); @@ -2054,13 +2053,13 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) child_setup_tty (xforkout); #ifdef WINDOWSNT pid = child_setup (xforkin, xforkout, xforkout, - new_argv, 1, current_dir); + new_argv, 1, encoded_current_dir); #else /* not WINDOWSNT */ #ifdef FD_CLOEXEC emacs_close (wait_child_setup[0]); #endif child_setup (xforkin, xforkout, xforkout, - new_argv, 1, current_dir); + new_argv, 1, encoded_current_dir); #endif /* not WINDOWSNT */ } environ = save_environ; -- 2.39.2