Mercurial > hg > xemacs-beta
comparison 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 |
comparison
equal
deleted
inserted
replaced
5469:2a8a04f73c15 | 5470:0af042a0c116 |
---|---|
1798 throw_level = 0; | 1798 throw_level = 0; |
1799 #endif | 1799 #endif |
1800 LONGJMP (c->jmp, 1); | 1800 LONGJMP (c->jmp, 1); |
1801 } | 1801 } |
1802 | 1802 |
1803 DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int, | 1803 DECLARE_DOESNT_RETURN (throw_or_bomb_out_unsafe (Lisp_Object, Lisp_Object, int, |
1804 Lisp_Object, Lisp_Object)); | 1804 Lisp_Object, Lisp_Object)); |
1805 | 1805 |
1806 DOESNT_RETURN | 1806 DOESNT_RETURN |
1807 throw_or_bomb_out (Lisp_Object tag, Lisp_Object val, int bomb_out_p, | 1807 throw_or_bomb_out_unsafe (Lisp_Object tag, Lisp_Object val, int bomb_out_p, |
1808 Lisp_Object sig, Lisp_Object data) | 1808 Lisp_Object sig, Lisp_Object data) |
1809 { | 1809 { |
1810 #ifdef DEFEND_AGAINST_THROW_RECURSION | |
1811 /* die if we recurse more than is reasonable */ | |
1812 assert (++throw_level <= 20); | |
1813 #endif | |
1814 | |
1815 #ifdef ERROR_CHECK_TRAPPING_PROBLEMS | |
1816 check_proper_critical_section_nonlocal_exit_protection (); | |
1817 #endif | |
1818 | |
1819 /* If bomb_out_p is t, this is being called from Fsignal as a | 1810 /* If bomb_out_p is t, this is being called from Fsignal as a |
1820 "last resort" when there is no handler for this error and | 1811 "last resort" when there is no handler for this error and |
1821 the debugger couldn't be invoked, so we are throwing to | 1812 the debugger couldn't be invoked, so we are throwing to |
1822 `top-level'. If this tag doesn't exist (happens during the | 1813 `top-level'. If this tag doesn't exist (happens during the |
1823 initialization stages) we would get in an infinite recursive | 1814 initialization stages) we would get in an infinite recursive |
1852 if (!bomb_out_p) | 1843 if (!bomb_out_p) |
1853 tag = Fsignal (Qno_catch, list2 (tag, val)); | 1844 tag = Fsignal (Qno_catch, list2 (tag, val)); |
1854 else | 1845 else |
1855 call1 (Qreally_early_error_handler, Fcons (sig, data)); | 1846 call1 (Qreally_early_error_handler, Fcons (sig, data)); |
1856 } | 1847 } |
1848 } | |
1849 | |
1850 DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int, | |
1851 Lisp_Object, Lisp_Object)); | |
1852 | |
1853 DOESNT_RETURN | |
1854 throw_or_bomb_out (Lisp_Object tag, Lisp_Object val, int bomb_out_p, | |
1855 Lisp_Object sig, Lisp_Object data) | |
1856 { | |
1857 #ifdef DEFEND_AGAINST_THROW_RECURSION | |
1858 /* die if we recurse more than is reasonable */ | |
1859 assert (++throw_level <= 20); | |
1860 #endif | |
1861 | |
1862 #ifdef ERROR_CHECK_TRAPPING_PROBLEMS | |
1863 check_proper_critical_section_nonlocal_exit_protection (); | |
1864 #endif | |
1865 throw_or_bomb_out_unsafe (tag, val, bomb_out_p, sig, data); | |
1857 } | 1866 } |
1858 | 1867 |
1859 /* See above, where CATCHLIST is defined, for a description of how | 1868 /* See above, where CATCHLIST is defined, for a description of how |
1860 Fthrow() works. | 1869 Fthrow() works. |
1861 | 1870 |