diff options
| author | Paul Eggert | 2011-08-03 20:08:01 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-08-03 20:08:01 -0700 |
| commit | c74e9d8682a27211336db9745f7b4d6399929b37 (patch) | |
| tree | 2be2294a289e908d85c9fd9d2968a84922801f45 /src | |
| parent | 19fe0c2e44466a0b9457ef11d23ce0b6e18baa99 (diff) | |
| download | emacs-c74e9d8682a27211336db9745f7b4d6399929b37.tar.gz emacs-c74e9d8682a27211336db9745f7b4d6399929b37.zip | |
* callproc.c (Fcall_process): Avoid vfork clobbering
the local vars buffer, coding_systems, current_dir.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/callproc.c | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 726ef7bce90..1ad53741533 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-08-04 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * callproc.c (Fcall_process): Avoid vfork clobbering | ||
| 4 | the local vars buffer, coding_systems, current_dir. | ||
| 5 | |||
| 1 | 2011-08-03 Stefan Monnier <monnier@iro.umontreal.ca> | 6 | 2011-08-03 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 7 | ||
| 3 | * keymap.c (Fmake_composed_keymap): Move to subr.el. | 8 | * 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) */) | |||
| 603 | 603 | ||
| 604 | /* vfork, and prevent local vars from being clobbered by the vfork. */ | 604 | /* vfork, and prevent local vars from being clobbered by the vfork. */ |
| 605 | { | 605 | { |
| 606 | Lisp_Object volatile buffer_volatile = buffer; | ||
| 607 | Lisp_Object volatile coding_systems_volatile = coding_systems; | ||
| 608 | Lisp_Object volatile current_dir_volatile = current_dir; | ||
| 606 | int volatile fd1_volatile = fd1; | 609 | int volatile fd1_volatile = fd1; |
| 607 | int volatile fd_error_volatile = fd_error; | 610 | int volatile fd_error_volatile = fd_error; |
| 608 | int volatile fd_output_volatile = fd_output; | 611 | int volatile fd_output_volatile = fd_output; |
| @@ -611,6 +614,9 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) | |||
| 611 | 614 | ||
| 612 | pid = vfork (); | 615 | pid = vfork (); |
| 613 | 616 | ||
| 617 | buffer = buffer_volatile; | ||
| 618 | coding_systems = coding_systems_volatile; | ||
| 619 | current_dir = current_dir_volatile; | ||
| 614 | fd1 = fd1_volatile; | 620 | fd1 = fd1_volatile; |
| 615 | fd_error = fd_error_volatile; | 621 | fd_error = fd_error_volatile; |
| 616 | fd_output = fd_output_volatile; | 622 | fd_output = fd_output_volatile; |