diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 26 |
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 | ||
| 1221 | The value of the last BODY form is returned from the condition-case. | 1222 | The value of the last BODY form is returned from the condition-case. |
| 1222 | See also the function `signal' for more info. | 1223 | See also the function `signal' for more info. |
| 1223 | usage: (condition-case VAR BODYFORM HANDLERS...) */) | 1224 | usage: (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 | ||
| 3245 | void | 3246 | void |
| 3247 | mark_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 | |||
| 3265 | void | ||
| 3246 | syms_of_eval () | 3266 | syms_of_eval () |
| 3247 | { | 3267 | { |
| 3248 | DEFVAR_INT ("max-specpdl-size", &max_specpdl_size, | 3268 | DEFVAR_INT ("max-specpdl-size", &max_specpdl_size, |