]> git.eshelyaron.com Git - emacs.git/commitdiff
(Frecursive_edit): Return immediately if input blocked.
authorKim F. Storm <storm@cua.dk>
Mon, 17 May 2004 23:07:15 +0000 (23:07 +0000)
committerKim F. Storm <storm@cua.dk>
Mon, 17 May 2004 23:07:15 +0000 (23:07 +0000)
(Ftop_level): Unblock input if blocked.

src/keyboard.c

index 15a16150ee87435f86c2035249b6cff696c4f72a..0102c5cd4383bf6106c9fa72145b9ddd53217367 100644 (file)
@@ -996,6 +996,11 @@ This function is called by the editor initialization to begin editing.  */)
   int count = SPECPDL_INDEX ();
   Lisp_Object buffer;
 
+  /* If we enter while input is blocked, don't lock up here.
+     This may happen through the debugger during redisplay.  */
+  if (INPUT_BLOCKED_P)
+    return Qnil;
+
   command_loop_level++;
   update_mode_lines = 1;
 
@@ -1294,6 +1299,12 @@ DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, "",
   if (display_hourglass_p)
     cancel_hourglass ();
 #endif
+
+  /* Unblock input if we enter with input blocked.  This may happen if
+     redisplay traps e.g. during tool-bar update with input blocked.  */
+  while (INPUT_BLOCKED_P)
+    UNBLOCK_INPUT;
+
   return Fthrow (Qtop_level, Qnil);
 }