Lisp_Object f, tail;
int passed = 0;
- /* There must always be at least one frame in Vframe_list. */
- eassert (CONSP (Vframe_list));
-
while (passed < 2)
FOR_EACH_FRAME (tail, f)
{
{
Lisp_Object f, tail, prev = Qnil;
- /* There must always be at least one frame in Vframe_list. */
- eassert (CONSP (Vframe_list));
-
FOR_EACH_FRAME (tail, f)
{
if (EQ (frame, f) && !NILP (prev))
/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
`for' loop which iterates over the elements of Vframe_list. The
loop will set FRAME_VAR, a Lisp_Object, to each frame in
- Vframe_list in succession and execute the statement. LIST_VAR
+ Vframe_list in succession and execute the statement. Vframe_list
+ should be nonempty, so the body is executed at least once. LIST_VAR
should be a Lisp_Object too; it is used to iterate through the
Vframe_list. Note that this macro walks over child frames and
the tooltip frame as well.
something which executes the statement once. */
#define FOR_EACH_FRAME(list_var, frame_var) \
- for ((list_var) = Vframe_list; \
+ for ((list_var) = (eassume (CONSP (Vframe_list)), Vframe_list); \
(CONSP (list_var) \
&& (frame_var = XCAR (list_var), true)); \
list_var = XCDR (list_var))