diff --git a/src/eval.c b/src/eval.c index b9a89374236..80d45a0060f 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1218,8 +1218,9 @@ See also the function `condition-case'.") Lisp_Object string; Lisp_Object real_error_symbol; Lisp_Object combined_data; + extern int display_busy_cursor_p; + extern int redisplaying_p; - quit_error_check (); immediate_quit = 0; if (gc_in_progress || waiting_for_input) abort (); @@ -1231,6 +1232,12 @@ See also the function `condition-case'.") else real_error_symbol = error_symbol; +#ifdef HAVE_X_WINDOWS + if (display_busy_cursor_p) + Fx_hide_busy_cursor (Qt); +#endif + redisplaying_p = 0; + /* This hook is used by edebug. */ if (! NILP (Vsignal_hook_function)) call2 (Vsignal_hook_function, error_symbol, data); @@ -1696,6 +1703,11 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0, struct backtrace backtrace; struct gcpro gcpro1, gcpro2, gcpro3; + /* Since Fsignal resets this to 0, it had better be 0 now + or else we have a potential bug. */ + if (interrupt_input_blocked != 0) + abort (); + if (SYMBOLP (form)) { if (EQ (Vmocklisp_arguments, Qt))