summaryrefslogtreecommitdiffstats
path: root/unwind.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-02-06 06:22:51 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-02-06 06:22:51 -0800
commit3286f2ca94da081bca5ddeffdfcc6ec92adf237c (patch)
treebfd61ea966ecf4d7094cd2e1a4178b6b996f64c9 /unwind.h
parent30c008e52d3c911ff6315c22633fbfec34487003 (diff)
downloadtxr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.tar.gz
txr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.tar.bz2
txr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.zip
* unwind.c (unhandled_hook_s): New static variable.
(uw_throw): In the unhandled case, check if *unhandled-hook* variable has a function, and use it instead of the default logic. If it's not a function, abort with an error message. Clear it so that if the hook function re-enters this code, it will not be used. Always exit now on unhandled exceptions; do not abort. (uw_late_init): New function. * unwind.h (uw_late_init): Declared. * lib.c (init): Call uw_late_init. * txr.1: Documented *unhandled-hook*. * genvim.txr: Scan the unwind.c file, since it has a reg_var now. * tl.vim, txr.vim: Updated.
Diffstat (limited to 'unwind.h')
-rw-r--r--unwind.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/unwind.h b/unwind.h
index e684eb79..634fdfea 100644
--- a/unwind.h
+++ b/unwind.h
@@ -114,6 +114,7 @@ void uw_pop_until(uw_frame_t *);
uw_frame_t *uw_current_frame(void);
uw_frame_t *uw_current_exit_point(void);
void uw_init(void);
+void uw_late_init(void);
noreturn val type_mismatch(val, ...);