diff options
| author | Andrea Corallo | 2020-12-19 21:02:49 +0100 |
|---|---|---|
| committer | Andrea Corallo | 2020-12-19 21:28:00 +0100 |
| commit | ab985f41db5fdaeada513d28a065332fd8838cf4 (patch) | |
| tree | 31b852d5223ef6d0dbd4f4514f207c20b7d6417b /src | |
| parent | 407fb165832341d3dccb78d2782d1790a19c4b9d (diff) | |
| download | emacs-ab985f41db5fdaeada513d28a065332fd8838cf4.tar.gz emacs-ab985f41db5fdaeada513d28a065332fd8838cf4.zip | |
Add 'internal_condition_case_5' (bug#45303).
* src/lisp.h (internal_condition_case_4)
(internal_condition_case_5): Declare.
* src/eval.c (internal_condition_case_5): New function.
* src/comp.c (eln_load_path_final_clean_up): Use
'internal_condition_case_5'.
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp.c | 4 | ||||
| -rw-r--r-- | src/eval.c | 29 | ||||
| -rw-r--r-- | src/lisp.h | 2 |
3 files changed, 33 insertions, 2 deletions
diff --git a/src/comp.c b/src/comp.c index f77faaa483e..12c5f1c7e49 100644 --- a/src/comp.c +++ b/src/comp.c | |||
| @@ -4618,11 +4618,11 @@ eln_load_path_final_clean_up (void) | |||
| 4618 | FOR_EACH_TAIL (dir_tail) | 4618 | FOR_EACH_TAIL (dir_tail) |
| 4619 | { | 4619 | { |
| 4620 | Lisp_Object files_in_dir = | 4620 | Lisp_Object files_in_dir = |
| 4621 | internal_condition_case_4 (Fdirectory_files, | 4621 | internal_condition_case_5 (Fdirectory_files, |
| 4622 | concat2 (XCAR (dir_tail), | 4622 | concat2 (XCAR (dir_tail), |
| 4623 | Vcomp_native_version_dir), | 4623 | Vcomp_native_version_dir), |
| 4624 | Qt, build_string ("\\.eln\\.old\\'"), Qnil, | 4624 | Qt, build_string ("\\.eln\\.old\\'"), Qnil, |
| 4625 | Qt, return_nil); | 4625 | Qt, return_nil, Qnil); |
| 4626 | FOR_EACH_TAIL (files_in_dir) | 4626 | FOR_EACH_TAIL (files_in_dir) |
| 4627 | Fdelete_file (XCAR (files_in_dir), Qnil); | 4627 | Fdelete_file (XCAR (files_in_dir), Qnil); |
| 4628 | } | 4628 | } |
diff --git a/src/eval.c b/src/eval.c index 2b31b91175b..368fa0944a1 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1534,6 +1534,35 @@ internal_condition_case_4 (Lisp_Object (*bfun) (Lisp_Object, Lisp_Object, | |||
| 1534 | } | 1534 | } |
| 1535 | } | 1535 | } |
| 1536 | 1536 | ||
| 1537 | /* Like internal_condition_case_1 but call BFUN with ARG1, ARG2, ARG3, | ||
| 1538 | ARG4, ARG5 as its arguments. */ | ||
| 1539 | |||
| 1540 | Lisp_Object | ||
| 1541 | internal_condition_case_5 (Lisp_Object (*bfun) (Lisp_Object, Lisp_Object, | ||
| 1542 | Lisp_Object, Lisp_Object, | ||
| 1543 | Lisp_Object), | ||
| 1544 | Lisp_Object arg1, Lisp_Object arg2, | ||
| 1545 | Lisp_Object arg3, Lisp_Object arg4, | ||
| 1546 | Lisp_Object arg5, Lisp_Object handlers, | ||
| 1547 | Lisp_Object (*hfun) (Lisp_Object)) | ||
| 1548 | { | ||
| 1549 | struct handler *c = push_handler (handlers, CONDITION_CASE); | ||
| 1550 | if (sys_setjmp (c->jmp)) | ||
| 1551 | { | ||
| 1552 | Lisp_Object val = handlerlist->val; | ||
| 1553 | clobbered_eassert (handlerlist == c); | ||
| 1554 | handlerlist = handlerlist->next; | ||
| 1555 | return hfun (val); | ||
| 1556 | } | ||
| 1557 | else | ||
| 1558 | { | ||
| 1559 | Lisp_Object val = bfun (arg1, arg2, arg3, arg4, arg5); | ||
| 1560 | eassert (handlerlist == c); | ||
| 1561 | handlerlist = c->next; | ||
| 1562 | return val; | ||
| 1563 | } | ||
| 1564 | } | ||
| 1565 | |||
| 1537 | /* Like internal_condition_case but call BFUN with NARGS as first, | 1566 | /* Like internal_condition_case but call BFUN with NARGS as first, |
| 1538 | and ARGS as second argument. */ | 1567 | and ARGS as second argument. */ |
| 1539 | 1568 | ||
diff --git a/src/lisp.h b/src/lisp.h index 588316e01b8..923e742eec6 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -4157,6 +4157,8 @@ extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, | |||
| 4157 | extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); | 4157 | extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); |
| 4158 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); | 4158 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); |
| 4159 | extern Lisp_Object internal_condition_case_3 (Lisp_Object (*) (Lisp_Object, Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); | 4159 | extern Lisp_Object internal_condition_case_3 (Lisp_Object (*) (Lisp_Object, Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); |
| 4160 | extern Lisp_Object internal_condition_case_4 (Lisp_Object (*) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); | ||
| 4161 | extern Lisp_Object internal_condition_case_5 (Lisp_Object (*) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); | ||
| 4160 | extern Lisp_Object internal_condition_case_n | 4162 | extern Lisp_Object internal_condition_case_n |
| 4161 | (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, | 4163 | (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, |
| 4162 | Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *)); | 4164 | Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *)); |