[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 720ed0b: Avoid crashes when ':eval' deletes our f
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] emacs-26 720ed0b: Avoid crashes when ':eval' deletes our frame |
Date: |
Sat, 23 Dec 2017 07:00:51 -0500 (EST) |
branch: emacs-26
commit 720ed0b5334c9667b2fdc4d3f5e8975865e9f962
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Avoid crashes when ':eval' deletes our frame
* src/xdisp.c (display_mode_element): Signal an error if
':eval' somehow deletes the frame whose window we are
redisplaying. (Bug#29726)
---
src/xdisp.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/xdisp.c b/src/xdisp.c
index 538c3e6..f6e98da 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -23685,6 +23685,14 @@ display_mode_element (struct it *it, int depth, int
field_width, int precision,
{
Lisp_Object spec;
spec = safe__eval (true, XCAR (XCDR (elt)));
+ /* The :eval form could delete the frame stored in the
+ iterator, which will cause a crash if we try to
+ access faces and other fields (e.g., FRAME_KBOARD)
+ on that frame. This is a nonsensical thing to do,
+ and signaling an error from redisplay might be
+ dangerous, but we cannot continue with an invalid frame. */
+ if (!FRAME_LIVE_P (it->f))
+ signal_error (":eval deleted the frame being displayed", elt);
n += display_mode_element (it, depth, field_width - n,
precision - n, spec, props,
risky);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 720ed0b: Avoid crashes when ':eval' deletes our frame,
Eli Zaretskii <=