summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c17
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);