diff options
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index bbdaa4fd7ee..cecf18cbfeb 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1083,6 +1083,16 @@ See also the function `signal' for more info.") return val; } +/* Call the function BFUN with no arguments, catching errors within it + according to HANDLERS. If there is an error, call HFUN with + one argument which is the data that describes the error: + (SIGNALNAME . DATA) + + HANDLERS can be a list of conditions to catch. + If HANDLERS is Qt, catch all errors. + If HANDLERS is Qerror, catch all errors + but allow the debugger to run if that is enabled. */ + Lisp_Object internal_condition_case (bfun, handlers, hfun) Lisp_Object (*bfun) (); @@ -1124,6 +1134,8 @@ internal_condition_case (bfun, handlers, hfun) return val; } +/* Like internal_condition_case but call HFUN with ARG as its argument. */ + Lisp_Object internal_condition_case_1 (bfun, arg, handlers, hfun) Lisp_Object (*bfun) (); @@ -1970,6 +1982,11 @@ run_hook_with_args (nargs, args, cond) Lisp_Object sym, val, ret; struct gcpro gcpro1, gcpro2; + /* If we are dying or still initializing, + don't do anything--it would probably crash if we tried. */ + if (NILP (Vrun_hooks)) + return; + sym = args[0]; val = find_symbol_value (sym); ret = (cond == until_failure ? Qt : Qnil); |