aboutsummaryrefslogtreecommitdiff
path: root/module/hnh/util.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/hnh/util.scm')
-rw-r--r--module/hnh/util.scm9
1 files changed, 6 insertions, 3 deletions
diff --git a/module/hnh/util.scm b/module/hnh/util.scm
index bd38a445..929f23a0 100644
--- a/module/hnh/util.scm
+++ b/module/hnh/util.scm
@@ -538,9 +538,12 @@
(define-syntax catch*
- (syntax-rules ()
+ (syntax-rules (pre-unwind)
+ ((_ thunk ((pre-unwind key) handler))
+ (with-throw-handler (quote key) thunk handler))
((_ thunk (key handler))
(catch (quote key) thunk handler))
- ((_ thunk (key handler) rest ...)
- (catch* (lambda () (catch (quote key) thunk handler))
+
+ ((_ thunk pair rest ...)
+ (catch* (lambda () (catch* thunk pair))
rest ...))))