diff options
author | Po Lu <luangruo@yahoo.com> | 2022-06-07 09:26:15 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-06-07 09:26:15 +0800 |
commit | 2267b48cac3c8e8a834b4faaa5390f2ad6a54281 (patch) | |
tree | f7c8c635762707535e835a312c1ef45c2e565edd /lisp/mouse.el | |
parent | 8c252e2326a3f633d281d70d2f9e7e75975ebdab (diff) | |
download | emacs-2267b48cac3c8e8a834b4faaa5390f2ad6a54281.tar.gz emacs-2267b48cac3c8e8a834b4faaa5390f2ad6a54281.tar.bz2 emacs-2267b48cac3c8e8a834b4faaa5390f2ad6a54281.zip |
Fix two crashes when a display connection is lost
This fixes errors caused by invalid error traps being left on
the error handler stack if an IO error causes a non-local exit
out of the protected code, and another crash caused by
delete_frame trying to read async input.
* src/eval.c (unwind_to_catch, push_handler_nosignal): Save and
restore the X error handler stack.
* src/lisp.h (struct handler): [HAVE_X_WINDOWS]: New field
`x_error_handler_depth'.
* src/xterm.c (struct x_error_message_stack): Make string a
regular string.
(x_unwind_errors_to): New function.
(x_error_catcher, x_catch_errors_with_handler)
(x_uncatch_errors_after_check, x_uncatch_errors): Update the
stack depth.
(x_check_errors): Stop manually unwinding since unwind_to_catch
now does that for us.
(x_had_errors_p, x_clear_errors): Update for new type of
`string'.
(x_connection_closed): Block input between just before
delete_frame to when the terminal is unlinked.
* src/xterm.h: Update prototypes.
Diffstat (limited to 'lisp/mouse.el')
0 files changed, 0 insertions, 0 deletions