Commit 2beb96f9 authored by Kim F. Storm's avatar Kim F. Storm
Browse files

(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.
parent 0885202f
......@@ -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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment