Commit 471f86b9 authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

(Fset_process_filter): Don't crash if the input

file descriptor of PROCESS is closed.
(Fset_process_window_size): Likewise.
parent 2ad02767
2001-03-07 Gerd Moellmann <gerd@gnu.org>
* process.c (Fset_process_filter): Don't crash if the input
file descriptor of PROCESS is closed.
(Fset_process_window_size): Likewise.
2001-03-06 Kenichi Handa <handa@etl.go.jp> 2001-03-06 Kenichi Handa <handa@etl.go.jp>
* xterm.c (XTflash): Make the timeout of select shorter, and call * xterm.c (XTflash): Make the timeout of select shorter, and call
......
...@@ -734,18 +734,34 @@ If the process has a filter, its buffer is not used for output.") ...@@ -734,18 +734,34 @@ If the process has a filter, its buffer is not used for output.")
(process, filter) (process, filter)
register Lisp_Object process, filter; register Lisp_Object process, filter;
{ {
struct Lisp_Process *p;
CHECK_PROCESS (process, 0); CHECK_PROCESS (process, 0);
if (EQ (filter, Qt)) p = XPROCESS (process);
{
FD_CLR (XINT (XPROCESS (process)->infd), &input_wait_mask); /* Don't signal an error if the process' input file descriptor
FD_CLR (XINT (XPROCESS (process)->infd), &non_keyboard_wait_mask); is closed. This could make debugging Lisp more difficult,
} for example when doing something like
else if (EQ (XPROCESS (process)->filter, Qt))
(setq process (start-process ...))
(debug)
(set-process-filter process ...) */
if (XINT (p->infd) >= 0)
{ {
FD_SET (XINT (XPROCESS (process)->infd), &input_wait_mask); if (EQ (filter, Qt))
FD_SET (XINT (XPROCESS (process)->infd), &non_keyboard_wait_mask); {
FD_CLR (XINT (p->infd), &input_wait_mask);
FD_CLR (XINT (p->infd), &non_keyboard_wait_mask);
}
else if (EQ (XPROCESS (process)->filter, Qt))
{
FD_SET (XINT (p->infd), &input_wait_mask);
FD_SET (XINT (p->infd), &non_keyboard_wait_mask);
}
} }
XPROCESS (process)->filter = filter;
p->filter = filter;
return filter; return filter;
} }
...@@ -793,8 +809,10 @@ DEFUN ("set-process-window-size", Fset_process_window_size, ...@@ -793,8 +809,10 @@ DEFUN ("set-process-window-size", Fset_process_window_size,
CHECK_PROCESS (process, 0); CHECK_PROCESS (process, 0);
CHECK_NATNUM (height, 0); CHECK_NATNUM (height, 0);
CHECK_NATNUM (width, 0); CHECK_NATNUM (width, 0);
if (set_window_size (XINT (XPROCESS (process)->infd),
XINT (height), XINT (width)) <= 0) if (XINT (XPROCESS (process)->infd < 0)
|| set_window_size (XINT (XPROCESS (process)->infd),
XINT (height), XINT (width)) <= 0)
return Qnil; return Qnil;
else else
return Qt; return Qt;
......
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