mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 18:37:33 +00:00
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'.
This commit is contained in:
parent
407fb16583
commit
ab985f41db
3 changed files with 33 additions and 2 deletions
|
|
@ -4618,11 +4618,11 @@ eln_load_path_final_clean_up (void)
|
|||
FOR_EACH_TAIL (dir_tail)
|
||||
{
|
||||
Lisp_Object files_in_dir =
|
||||
internal_condition_case_4 (Fdirectory_files,
|
||||
internal_condition_case_5 (Fdirectory_files,
|
||||
concat2 (XCAR (dir_tail),
|
||||
Vcomp_native_version_dir),
|
||||
Qt, build_string ("\\.eln\\.old\\'"), Qnil,
|
||||
Qt, return_nil);
|
||||
Qt, return_nil, Qnil);
|
||||
FOR_EACH_TAIL (files_in_dir)
|
||||
Fdelete_file (XCAR (files_in_dir), Qnil);
|
||||
}
|
||||
|
|
|
|||
29
src/eval.c
29
src/eval.c
|
|
@ -1534,6 +1534,35 @@ internal_condition_case_4 (Lisp_Object (*bfun) (Lisp_Object, Lisp_Object,
|
|||
}
|
||||
}
|
||||
|
||||
/* Like internal_condition_case_1 but call BFUN with ARG1, ARG2, ARG3,
|
||||
ARG4, ARG5 as its arguments. */
|
||||
|
||||
Lisp_Object
|
||||
internal_condition_case_5 (Lisp_Object (*bfun) (Lisp_Object, Lisp_Object,
|
||||
Lisp_Object, Lisp_Object,
|
||||
Lisp_Object),
|
||||
Lisp_Object arg1, Lisp_Object arg2,
|
||||
Lisp_Object arg3, Lisp_Object arg4,
|
||||
Lisp_Object arg5, Lisp_Object handlers,
|
||||
Lisp_Object (*hfun) (Lisp_Object))
|
||||
{
|
||||
struct handler *c = push_handler (handlers, CONDITION_CASE);
|
||||
if (sys_setjmp (c->jmp))
|
||||
{
|
||||
Lisp_Object val = handlerlist->val;
|
||||
clobbered_eassert (handlerlist == c);
|
||||
handlerlist = handlerlist->next;
|
||||
return hfun (val);
|
||||
}
|
||||
else
|
||||
{
|
||||
Lisp_Object val = bfun (arg1, arg2, arg3, arg4, arg5);
|
||||
eassert (handlerlist == c);
|
||||
handlerlist = c->next;
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
/* Like internal_condition_case but call BFUN with NARGS as first,
|
||||
and ARGS as second argument. */
|
||||
|
||||
|
|
|
|||
|
|
@ -4157,6 +4157,8 @@ extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object,
|
|||
extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
|
||||
extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
|
||||
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));
|
||||
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));
|
||||
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));
|
||||
extern Lisp_Object internal_condition_case_n
|
||||
(Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *,
|
||||
Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *));
|
||||
|
|
|
|||
Loading…
Reference in a new issue