aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index 0326a828a81..096755f9c77 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -617,6 +617,7 @@ usage: (defun NAME ARGLIST [DOCSTRING] BODY...) */)
617 register Lisp_Object defn; 617 register Lisp_Object defn;
618 618
619 fn_name = Fcar (args); 619 fn_name = Fcar (args);
620 CHECK_SYMBOL (fn_name);
620 defn = Fcons (Qlambda, Fcdr (args)); 621 defn = Fcons (Qlambda, Fcdr (args));
621 if (!NILP (Vpurify_flag)) 622 if (!NILP (Vpurify_flag))
622 defn = Fpurecopy (defn); 623 defn = Fpurecopy (defn);
@@ -1220,7 +1221,7 @@ VAR may be nil; then you do not get access to the signal information.
1220 1221
1221The value of the last BODY form is returned from the condition-case. 1222The value of the last BODY form is returned from the condition-case.
1222See also the function `signal' for more info. 1223See also the function `signal' for more info.
1223usage: (condition-case VAR BODYFORM HANDLERS...) */) 1224usage: (condition-case VAR BODYFORM &rest HANDLERS) */)
1224 (args) 1225 (args)
1225 Lisp_Object args; 1226 Lisp_Object args;
1226{ 1227{
@@ -1235,10 +1236,10 @@ usage: (condition-case VAR BODYFORM HANDLERS...) */)
1235 handlers = Fcdr (Fcdr (args)); 1236 handlers = Fcdr (Fcdr (args));
1236 CHECK_SYMBOL (var); 1237 CHECK_SYMBOL (var);
1237 1238
1238 for (val = handlers; ! NILP (val); val = Fcdr (val)) 1239 for (val = handlers; CONSP (val); val = XCDR (val))
1239 { 1240 {
1240 Lisp_Object tem; 1241 Lisp_Object tem;
1241 tem = Fcar (val); 1242 tem = XCAR (val);
1242 if (! (NILP (tem) 1243 if (! (NILP (tem)
1243 || (CONSP (tem) 1244 || (CONSP (tem)
1244 && (SYMBOLP (XCAR (tem)) 1245 && (SYMBOLP (XCAR (tem))
@@ -3243,6 +3244,25 @@ If NFRAMES is more than the number of frames, the value is nil. */)
3243 3244
3244 3245
3245void 3246void
3247mark_backtrace ()
3248{
3249 register struct backtrace *backlist;
3250 register int i;
3251
3252 for (backlist = backtrace_list; backlist; backlist = backlist->next)
3253 {
3254 mark_object (*backlist->function);
3255
3256 if (backlist->nargs == UNEVALLED || backlist->nargs == MANY)
3257 i = 0;
3258 else
3259 i = backlist->nargs - 1;
3260 for (; i >= 0; i--)
3261 mark_object (backlist->args[i]);
3262 }
3263}
3264
3265void
3246syms_of_eval () 3266syms_of_eval ()
3247{ 3267{
3248 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size, 3268 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size,