diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/src/eval.c b/src/eval.c index cb8b4f3ea07..e8a3f947f9d 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1640,8 +1640,7 @@ internal_condition_case_n (Lisp_Object (*bfun) (ptrdiff_t, Lisp_Object *), | |||
| 1640 | } | 1640 | } |
| 1641 | 1641 | ||
| 1642 | 1642 | ||
| 1643 | static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object, | 1643 | static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object); |
| 1644 | Lisp_Object, Lisp_Object); | ||
| 1645 | static int maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, | 1644 | static int maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, |
| 1646 | Lisp_Object data); | 1645 | Lisp_Object data); |
| 1647 | 1646 | ||
| @@ -1717,8 +1716,7 @@ See also the function `condition-case'. */) | |||
| 1717 | 1716 | ||
| 1718 | for (h = handlerlist; h; h = h->next) | 1717 | for (h = handlerlist; h; h = h->next) |
| 1719 | { | 1718 | { |
| 1720 | clause = find_handler_clause (h->handler, conditions, | 1719 | clause = find_handler_clause (h->handler, conditions); |
| 1721 | error_symbol, data); | ||
| 1722 | if (!NILP (clause)) | 1720 | if (!NILP (clause)) |
| 1723 | break; | 1721 | break; |
| 1724 | } | 1722 | } |
| @@ -1889,8 +1887,10 @@ skip_debugger (Lisp_Object conditions, Lisp_Object data) | |||
| 1889 | } | 1887 | } |
| 1890 | 1888 | ||
| 1891 | /* Call the debugger if calling it is currently enabled for CONDITIONS. | 1889 | /* Call the debugger if calling it is currently enabled for CONDITIONS. |
| 1892 | SIG and DATA describe the signal, as in find_handler_clause. */ | 1890 | SIG and DATA describe the signal. There are two ways to pass them: |
| 1893 | 1891 | = SIG is the error symbol, and DATA is the rest of the data. | |
| 1892 | = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA). | ||
| 1893 | This is for memory-full errors only. */ | ||
| 1894 | static int | 1894 | static int |
| 1895 | maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data) | 1895 | maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data) |
| 1896 | { | 1896 | { |
| @@ -1917,19 +1917,8 @@ maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data) | |||
| 1917 | return 0; | 1917 | return 0; |
| 1918 | } | 1918 | } |
| 1919 | 1919 | ||
| 1920 | /* Value of Qlambda means we have called debugger and user has continued. | ||
| 1921 | There are two ways to pass SIG and DATA: | ||
| 1922 | = SIG is the error symbol, and DATA is the rest of the data. | ||
| 1923 | = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA). | ||
| 1924 | This is for memory-full errors only. | ||
| 1925 | |||
| 1926 | We need to increase max_specpdl_size temporarily around | ||
| 1927 | anything we do that can push on the specpdl, so as not to get | ||
| 1928 | a second error here in case we're handling specpdl overflow. */ | ||
| 1929 | |||
| 1930 | static Lisp_Object | 1920 | static Lisp_Object |
| 1931 | find_handler_clause (Lisp_Object handlers, Lisp_Object conditions, | 1921 | find_handler_clause (Lisp_Object handlers, Lisp_Object conditions) |
| 1932 | Lisp_Object sig, Lisp_Object data) | ||
| 1933 | { | 1922 | { |
| 1934 | register Lisp_Object h; | 1923 | register Lisp_Object h; |
| 1935 | 1924 | ||