* process.c (create_process): Use 'volatile' to avoid vfork clobbering.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 20 Mar 2011 03:07:54 +0000 (20:07 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 20 Mar 2011 03:07:54 +0000 (20:07 -0700)
src/ChangeLog
src/process.c

index 041d4b2..bc306f2 100644 (file)
@@ -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  <eggert@cs.ucla.edu>
 
index 5bc1707..5ee731a 100644 (file)
@@ -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;