diff options
| author | Gerd Moellmann | 2000-07-14 13:57:10 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-07-14 13:57:10 +0000 |
| commit | 10b29d414ed6ed70bad2d3c8cd12f13ee8607784 (patch) | |
| tree | e49fd17a2dcd7a3f133255c342ccc5923e25a4fd /src/eval.c | |
| parent | 0d8b31c0ff1b0814b8b38206961d5c6a83a3ac69 (diff) | |
| download | emacs-10b29d414ed6ed70bad2d3c8cd12f13ee8607784.tar.gz emacs-10b29d414ed6ed70bad2d3c8cd12f13ee8607784.zip | |
(internal_condition_case_2): New function.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index da63f9833a1..d7561353961 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1274,6 +1274,50 @@ internal_condition_case_1 (bfun, arg, handlers, hfun) | |||
| 1274 | handlerlist = h.next; | 1274 | handlerlist = h.next; |
| 1275 | return val; | 1275 | return val; |
| 1276 | } | 1276 | } |
| 1277 | |||
| 1278 | |||
| 1279 | /* Like internal_condition_case but call HFUN with NARGS as first, | ||
| 1280 | and ARGS as second argument. */ | ||
| 1281 | |||
| 1282 | Lisp_Object | ||
| 1283 | internal_condition_case_2 (bfun, nargs, args, handlers, hfun) | ||
| 1284 | Lisp_Object (*bfun) (); | ||
| 1285 | int nargs; | ||
| 1286 | Lisp_Object *args; | ||
| 1287 | Lisp_Object handlers; | ||
| 1288 | Lisp_Object (*hfun) (); | ||
| 1289 | { | ||
| 1290 | Lisp_Object val; | ||
| 1291 | struct catchtag c; | ||
| 1292 | struct handler h; | ||
| 1293 | |||
| 1294 | c.tag = Qnil; | ||
| 1295 | c.val = Qnil; | ||
| 1296 | c.backlist = backtrace_list; | ||
| 1297 | c.handlerlist = handlerlist; | ||
| 1298 | c.lisp_eval_depth = lisp_eval_depth; | ||
| 1299 | c.pdlcount = specpdl_ptr - specpdl; | ||
| 1300 | c.poll_suppress_count = poll_suppress_count; | ||
| 1301 | c.gcpro = gcprolist; | ||
| 1302 | c.byte_stack = byte_stack_list; | ||
| 1303 | if (_setjmp (c.jmp)) | ||
| 1304 | { | ||
| 1305 | return (*hfun) (c.val); | ||
| 1306 | } | ||
| 1307 | c.next = catchlist; | ||
| 1308 | catchlist = &c; | ||
| 1309 | h.handler = handlers; | ||
| 1310 | h.var = Qnil; | ||
| 1311 | h.next = handlerlist; | ||
| 1312 | h.tag = &c; | ||
| 1313 | handlerlist = &h; | ||
| 1314 | |||
| 1315 | val = (*bfun) (nargs, args); | ||
| 1316 | catchlist = c.next; | ||
| 1317 | handlerlist = h.next; | ||
| 1318 | return val; | ||
| 1319 | } | ||
| 1320 | |||
| 1277 | 1321 | ||
| 1278 | static Lisp_Object find_handler_clause (); | 1322 | static Lisp_Object find_handler_clause (); |
| 1279 | 1323 | ||