diff options
| author | Richard M. Stallman | 1994-02-07 01:02:05 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1994-02-07 01:02:05 +0000 |
| commit | d227775c812fc1b75e56829bae372ca48833d00e (patch) | |
| tree | 602bc2df084dc2fe27a8cb2667b1a2abcdc2b18a /src/eval.c | |
| parent | f1ff6645440865dcbf65689b399d9d88d107d4e8 (diff) | |
| download | emacs-d227775c812fc1b75e56829bae372ca48833d00e.tar.gz emacs-d227775c812fc1b75e56829bae372ca48833d00e.zip | |
(internal_condition_case_1): New function.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index d2ca5418e20..9e5a33d9775 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1094,6 +1094,43 @@ internal_condition_case (bfun, handlers, hfun) | |||
| 1094 | return val; | 1094 | return val; |
| 1095 | } | 1095 | } |
| 1096 | 1096 | ||
| 1097 | Lisp_Object | ||
| 1098 | internal_condition_case_1 (bfun, arg, handlers, hfun) | ||
| 1099 | Lisp_Object (*bfun) (); | ||
| 1100 | Lisp_Object arg; | ||
| 1101 | Lisp_Object handlers; | ||
| 1102 | Lisp_Object (*hfun) (); | ||
| 1103 | { | ||
| 1104 | Lisp_Object val; | ||
| 1105 | struct catchtag c; | ||
| 1106 | struct handler h; | ||
| 1107 | |||
| 1108 | c.tag = Qnil; | ||
| 1109 | c.val = Qnil; | ||
| 1110 | c.backlist = backtrace_list; | ||
| 1111 | c.handlerlist = handlerlist; | ||
| 1112 | c.lisp_eval_depth = lisp_eval_depth; | ||
| 1113 | c.pdlcount = specpdl_ptr - specpdl; | ||
| 1114 | c.poll_suppress_count = poll_suppress_count; | ||
| 1115 | c.gcpro = gcprolist; | ||
| 1116 | if (_setjmp (c.jmp)) | ||
| 1117 | { | ||
| 1118 | return (*hfun) (Fcdr (c.val)); | ||
| 1119 | } | ||
| 1120 | c.next = catchlist; | ||
| 1121 | catchlist = &c; | ||
| 1122 | h.handler = handlers; | ||
| 1123 | h.var = Qnil; | ||
| 1124 | h.next = handlerlist; | ||
| 1125 | h.tag = &c; | ||
| 1126 | handlerlist = &h; | ||
| 1127 | |||
| 1128 | val = (*bfun) (arg); | ||
| 1129 | catchlist = c.next; | ||
| 1130 | handlerlist = h.next; | ||
| 1131 | return val; | ||
| 1132 | } | ||
| 1133 | |||
| 1097 | static Lisp_Object find_handler_clause (); | 1134 | static Lisp_Object find_handler_clause (); |
| 1098 | 1135 | ||
| 1099 | DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0, | 1136 | DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0, |