changeset 55596:0249aeeeaad6

(in_timer_check): New static var. (timer_check): Use it to guard against reentry.
author Kim F. Storm <storm@cua.dk>
date Fri, 14 May 2004 20:16:06 +0000
parents 9462ee156651
children 2f83cdfb90f6
files src/keyboard.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Fri May 14 20:15:14 2004 +0000
+++ b/src/keyboard.c	Fri May 14 20:16:06 2004 +0000
@@ -4249,6 +4249,8 @@
    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 @@
   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 @@
 	   return the amount of time to wait before it is ripe.  */
 	{
 	  UNGCPRO;
+	  in_timer_check = 0;
 	  return difference;
 	}
     }
@@ -4426,6 +4434,7 @@
   /* 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;
 }