Commit 88019a63 authored by Richard M. Stallman's avatar Richard M. Stallman

(unwind_to_catch): Call x_fully_uncatch_errors.

(internal_condition_case_1, internal_condition_case_2):
Abort if within unclosed x_catch_errors.
parent f7878d66
......@@ -1259,6 +1259,10 @@ unwind_to_catch (catch, value)
}
while (! last_time);
/* If x_catch_errors was done, turn it off now.
(First we give unbind_to a chance to do that.) */
x_fully_uncatch_errors ();
byte_stack_list = catch->byte_stack;
gcprolist = catch->gcpro;
#ifdef DEBUG_GCPRO
......@@ -1435,10 +1439,10 @@ internal_condition_case (bfun, handlers, hfun)
struct catchtag c;
struct handler h;
#if 0 /* We now handle interrupt_input_blocked properly.
What we still do not handle is exiting a signal handler. */
/* Since Fsignal will close off all calls to x_catch_errors,
we will get the wrong results if some are not closed now. */
if (x_catching_errors ())
abort ();
#endif
c.tag = Qnil;
c.val = Qnil;
......@@ -1481,6 +1485,11 @@ internal_condition_case_1 (bfun, arg, handlers, hfun)
struct catchtag c;
struct handler h;
/* Since Fsignal will close off all calls to x_catch_errors,
we will get the wrong results if some are not closed now. */
if (x_catching_errors ())
abort ();
c.tag = Qnil;
c.val = Qnil;
c.backlist = backtrace_list;
......@@ -1525,6 +1534,11 @@ internal_condition_case_2 (bfun, nargs, args, handlers, hfun)
struct catchtag c;
struct handler h;
/* Since Fsignal will close off all calls to x_catch_errors,
we will get the wrong results if some are not closed now. */
if (x_catching_errors ())
abort ();
c.tag = Qnil;
c.val = Qnil;
c.backlist = backtrace_list;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment