Mercurial > hg > xemacs-beta
diff src/eval.c @ 5470:0af042a0c116
Merge with trunk.
author | Mats Lidell <matsl@xemacs.org> |
---|---|
date | Mon, 07 Feb 2011 21:22:17 +0100 |
parents | 8d29f1c4bb98 39304a35b6b3 |
children | b0d87f92e60b |
line wrap: on
line diff
--- a/src/eval.c Sat Jan 22 00:59:20 2011 +0100 +++ b/src/eval.c Mon Feb 07 21:22:17 2011 +0100 @@ -1800,22 +1800,13 @@ LONGJMP (c->jmp, 1); } -DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int, +DECLARE_DOESNT_RETURN (throw_or_bomb_out_unsafe (Lisp_Object, Lisp_Object, int, Lisp_Object, Lisp_Object)); DOESNT_RETURN -throw_or_bomb_out (Lisp_Object tag, Lisp_Object val, int bomb_out_p, - Lisp_Object sig, Lisp_Object data) -{ -#ifdef DEFEND_AGAINST_THROW_RECURSION - /* die if we recurse more than is reasonable */ - assert (++throw_level <= 20); -#endif - -#ifdef ERROR_CHECK_TRAPPING_PROBLEMS - check_proper_critical_section_nonlocal_exit_protection (); -#endif - +throw_or_bomb_out_unsafe (Lisp_Object tag, Lisp_Object val, int bomb_out_p, + Lisp_Object sig, Lisp_Object data) +{ /* If bomb_out_p is t, this is being called from Fsignal as a "last resort" when there is no handler for this error and the debugger couldn't be invoked, so we are throwing to @@ -1855,6 +1846,24 @@ call1 (Qreally_early_error_handler, Fcons (sig, data)); } } + +DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int, + Lisp_Object, Lisp_Object)); + +DOESNT_RETURN +throw_or_bomb_out (Lisp_Object tag, Lisp_Object val, int bomb_out_p, + Lisp_Object sig, Lisp_Object data) +{ +#ifdef DEFEND_AGAINST_THROW_RECURSION + /* die if we recurse more than is reasonable */ + assert (++throw_level <= 20); +#endif + +#ifdef ERROR_CHECK_TRAPPING_PROBLEMS + check_proper_critical_section_nonlocal_exit_protection (); +#endif + throw_or_bomb_out_unsafe (tag, val, bomb_out_p, sig, data); +} /* See above, where CATCHLIST is defined, for a description of how Fthrow() works.