[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 3de8ed09ab4: Avoid infinite recursion in 'window_wants_header_lin
From: |
Eli Zaretskii |
Subject: |
master 3de8ed09ab4: Avoid infinite recursion in 'window_wants_header_line' |
Date: |
Sat, 10 Jun 2023 04:49:52 -0400 (EDT) |
branch: master
commit 3de8ed09ab46b9922e15aaf0cc8884b41087c996
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
Avoid infinite recursion in 'window_wants_header_line'
* src/window.c (null_header_line_format): Avoid infinite
recursion by disallowing :eval on recursive calls.
(Bug#63988)
---
src/window.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/window.c b/src/window.c
index 3802efb992a..e22fea0bb7a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5470,6 +5470,7 @@ window_wants_mode_line (struct window *w)
&& WINDOW_PIXEL_HEIGHT (w) > WINDOW_FRAME_LINE_HEIGHT (w));
}
+static int header_line_eval_called = 0;
/**
* null_header_line_format:
@@ -5497,9 +5498,18 @@ null_header_line_format (Lisp_Object fmt, struct frame
*f)
{
if (EQ (car, QCeval))
{
+ if (header_line_eval_called > 0)
+ return false;
+ eassert (header_line_eval_called == 0);
+ header_line_eval_called++;
val = safe_eval_inhibit_quit (XCAR (XCDR (fmt)));
+ header_line_eval_called--;
+ eassert (header_line_eval_called == 0);
if (!FRAME_LIVE_P (f))
- signal_error (":eval deleted the frame being displayed", fmt);
+ {
+ header_line_eval_called = 0;
+ signal_error (":eval deleted the frame being displayed", fmt);
+ }
return NILP (val);
}
val = find_symbol_value (car);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 3de8ed09ab4: Avoid infinite recursion in 'window_wants_header_line',
Eli Zaretskii <=