diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 6 |
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); |