From 9af28288fa636a071149fe67604b0f9691423d0c Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 14 May 2004 20:16:06 +0000 Subject: [PATCH] (in_timer_check): New static var. (timer_check): Use it to guard against reentry. --- src/keyboard.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/keyboard.c b/src/keyboard.c index b9e455a4431..a3fae774431 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -4249,6 +4249,8 @@ struct input_event last_timer_event; run the timer directly instead of queueing a timer-event. Now we always run timers directly. */ +static int in_timer_check = 0; + EMACS_TIME timer_check (do_it_now) int do_it_now; @@ -4261,6 +4263,11 @@ timer_check (do_it_now) EMACS_SET_SECS (nexttime, -1); EMACS_SET_USECS (nexttime, -1); + if (in_timer_check) + return nexttime; + + in_timer_check = 1; + /* Always consider the ordinary timers. */ timers = Vtimer_list; /* Consider the idle timers only if Emacs is idle. */ @@ -4419,6 +4426,7 @@ timer_check (do_it_now) return the amount of time to wait before it is ripe. */ { UNGCPRO; + in_timer_check = 0; return difference; } } @@ -4426,6 +4434,7 @@ timer_check (do_it_now) /* No timers are pending in the future. */ /* Return 0 if we generated an event, and -1 if not. */ UNGCPRO; + in_timer_check = 0; return nexttime; } -- 2.39.5