aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index 5e2b5bff796..204adb62472 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -302,6 +302,7 @@ call_debugger (Lisp_Object arg)
302 /* Resetting redisplaying_p to 0 makes sure that debug output is 302 /* Resetting redisplaying_p to 0 makes sure that debug output is
303 displayed if the debugger is invoked during redisplay. */ 303 displayed if the debugger is invoked during redisplay. */
304 debug_while_redisplaying = redisplaying_p; 304 debug_while_redisplaying = redisplaying_p;
305 int redisplay_counter_before = redisplay_counter;
305 redisplaying_p = 0; 306 redisplaying_p = 0;
306 specbind (Qdebugger_may_continue, 307 specbind (Qdebugger_may_continue,
307 debug_while_redisplaying ? Qnil : Qt); 308 debug_while_redisplaying ? Qnil : Qt);
@@ -323,9 +324,10 @@ call_debugger (Lisp_Object arg)
323 /* Interrupting redisplay and resuming it later is not safe under 324 /* Interrupting redisplay and resuming it later is not safe under
324 all circumstances. So, when the debugger returns, abort the 325 all circumstances. So, when the debugger returns, abort the
325 interrupted redisplay by going back to the top-level. */ 326 interrupted redisplay by going back to the top-level. */
326 /* FIXME: Move this to the redisplay code? */
327 if (debug_while_redisplaying 327 if (debug_while_redisplaying
328 && !EQ (Vdebugger, Qdebug_early)) 328 && redisplay_counter_before != redisplay_counter)
329 /* FIXME: Rather than jump all the way to `top-level`
330 we should exit only the current redisplay. */
329 Ftop_level (); 331 Ftop_level ();
330 332
331 return unbind_to (count, val); 333 return unbind_to (count, val);