]> git.eshelyaron.com Git - emacs.git/commitdiff
(redisplay_internal, redisplay_windows):
authorRichard M. Stallman <rms@gnu.org>
Sat, 16 Mar 2002 07:05:59 +0000 (07:05 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 16 Mar 2002 07:05:59 +0000 (07:05 +0000)
Use list_of_error to call internal_condition_case_1.
(safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2}
so as to catch all errors with no possibility of debugger redisplay.
(list_of_error): New variable.
(syms_of_xdisp): Init and staticpro it.

src/xdisp.c

index 6ac581914a7f3cbee3692fc86b14d99927ad4249..80667951f91c36bd17dd9bc4f84e077e59728e99 100644 (file)
@@ -226,6 +226,9 @@ Lisp_Object Qgrow_only;
 Lisp_Object Qinhibit_eval_during_redisplay;
 Lisp_Object Qbuffer_position, Qposition, Qobject;
 
+/* Holds the list (error).  */
+Lisp_Object list_of_error;
+
 /* Functions called to fontify regions of text.  */
 
 Lisp_Object Vfontification_functions;
@@ -1323,7 +1326,9 @@ safe_eval (sexpr)
 
       GCPRO1 (sexpr);
       specbind (Qinhibit_redisplay, Qt);
-      val = internal_condition_case_1 (Feval, sexpr, Qerror,
+      /* Use Qt to ensure debugger does not run,
+        so there is no possibility of wanting to redisplay.  */
+      val = internal_condition_case_1 (Feval, sexpr, Qt,
                                       safe_eval_handler);
       UNGCPRO;
       val = unbind_to (count, val);
@@ -1354,7 +1359,9 @@ safe_call (nargs, args)
       GCPRO1 (args[0]);
       gcpro1.nvars = nargs;
       specbind (Qinhibit_redisplay, Qt);
-      val = internal_condition_case_2 (Ffuncall, nargs, args, Qerror,
+      /* Use Qt to ensure debugger does not run,
+        so there is no possibility of wanting to redisplay.  */
+      val = internal_condition_case_2 (Ffuncall, nargs, args, Qt,
                                       safe_eval_handler);
       UNGCPRO;
       val = unbind_to (count, val);
@@ -8960,7 +8967,10 @@ redisplay_internal (preserve_echo_area)
       struct frame *mini_frame;
 
       displayed_buffer = XBUFFER (XWINDOW (selected_window)->buffer);
-      internal_condition_case_1 (redisplay_window_1, selected_window, Qerror,
+      /* Use list_of_error, not Qerror, so that
+        we catch only errors and don't run the debugger.  */
+      internal_condition_case_1 (redisplay_window_1, selected_window,
+                                list_of_error,
                                 redisplay_window_error);
   
       /* Compare desired and current matrices, perform output.  */
@@ -9299,7 +9309,10 @@ redisplay_windows (window)
       else
        {
          displayed_buffer = XBUFFER (w->buffer);
-         internal_condition_case_1 (redisplay_window_0, window, Qerror,
+         /* Use list_of_error, not Qerror, so that
+            we catch only errors and don't run the debugger.  */
+         internal_condition_case_1 (redisplay_window_0, window, 
+                                    list_of_error,
                                     redisplay_window_error);
        }
 
@@ -14887,6 +14900,9 @@ syms_of_xdisp ()
   Qobject = intern ("object");
   staticpro (&Qobject);
 
+  list_of_error = Fcons (intern ("error"), Qnil);
+  staticpro (&list_of_error);
+
   last_arrow_position = Qnil;
   last_arrow_string = Qnil;
   staticpro (&last_arrow_position);