From c74e9d8682a27211336db9745f7b4d6399929b37 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 3 Aug 2011 20:08:01 -0700 Subject: [PATCH] * callproc.c (Fcall_process): Avoid vfork clobbering the local vars buffer, coding_systems, current_dir. --- src/ChangeLog | 5 +++++ src/callproc.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 726ef7bce90..1ad53741533 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-08-04 Paul Eggert + + * callproc.c (Fcall_process): Avoid vfork clobbering + the local vars buffer, coding_systems, current_dir. + 2011-08-03 Stefan Monnier * keymap.c (Fmake_composed_keymap): Move to subr.el. diff --git a/src/callproc.c b/src/callproc.c index f148f6233d4..3a91be3d8da 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -603,6 +603,9 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) /* vfork, and prevent local vars from being clobbered by the vfork. */ { + Lisp_Object volatile buffer_volatile = buffer; + Lisp_Object volatile coding_systems_volatile = coding_systems; + Lisp_Object volatile current_dir_volatile = current_dir; int volatile fd1_volatile = fd1; int volatile fd_error_volatile = fd_error; int volatile fd_output_volatile = fd_output; @@ -611,6 +614,9 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) pid = vfork (); + buffer = buffer_volatile; + coding_systems = coding_systems_volatile; + current_dir = current_dir_volatile; fd1 = fd1_volatile; fd_error = fd_error_volatile; fd_output = fd_output_volatile; -- 2.39.2