diff options
author | Kim F. Storm <storm@cua.dk> | 2006-08-01 00:13:08 +0000 |
---|---|---|
committer | Kim F. Storm <storm@cua.dk> | 2006-08-01 00:13:08 +0000 |
commit | 2beb96f9ccc60babc90159ea1508966d93d2c0db (patch) | |
tree | e17b64034d2ccadfe0982d3939dfe972b94ba054 /src/process.c | |
parent | 0885202f7213195d276ad9d4fa9db3b2c97efba0 (diff) | |
download | emacs-2beb96f9ccc60babc90159ea1508966d93d2c0db.tar.gz emacs-2beb96f9ccc60babc90159ea1508966d93d2c0db.tar.bz2 emacs-2beb96f9ccc60babc90159ea1508966d93d2c0db.zip |
(wait_reading_process_output_unwind): New function.
Restores waiting_for_user_input_p to saved value.
(wait_reading_process_output): Unwind protect waiting_for_user_input_p
instead of save/restore old value on stack.
Diffstat (limited to 'src/process.c')
-rw-r--r-- | src/process.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/process.c b/src/process.c index 857d7494c69..b24dee002c6 100644 --- a/src/process.c +++ b/src/process.c @@ -4158,6 +4158,14 @@ server_accept_connection (server, channel) when not inside wait_reading_process_output. */ static int waiting_for_user_input_p; +static Lisp_Object +wait_reading_process_output_unwind (data) + Lisp_Object data; +{ + waiting_for_user_input_p = XINT (data); + return Qnil; +} + /* This is here so breakpoints can be put on it. */ static void wait_reading_process_output_1 () @@ -4240,9 +4248,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display, EMACS_TIME timeout, end_time; int wait_channel = -1; int got_some_input = 0; - /* Either nil or a cons cell, the car of which is of interest and - may be changed outside of this routine. */ - int saved_waiting_for_user_input_p = waiting_for_user_input_p; + int count = SPECPDL_INDEX (); FD_ZERO (&Available); #ifdef NON_BLOCKING_CONNECT @@ -4253,6 +4259,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display, if (wait_proc != NULL) wait_channel = XINT (wait_proc->infd); + record_unwind_protect (wait_reading_process_output_unwind, + make_number (waiting_for_user_input_p)); waiting_for_user_input_p = read_kbd; /* Since we may need to wait several times, @@ -4879,7 +4887,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display, } /* end for each file descriptor */ } /* end while exit conditions not met */ - waiting_for_user_input_p = saved_waiting_for_user_input_p; + unbind_to (count, Qnil); /* If calling from keyboard input, do not quit since we want to return C-g as an input character. |