summaryrefslogtreecommitdiffstats
path: root/match.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-04-07 06:36:04 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-04-07 06:36:04 -0700
commit3dba6ca7c542fefb2124340f948a0b10eea94b91 (patch)
treef7678e2b25d2e0f41de83631e03ae30fca884ef9 /match.c
parentd104ccf947c66035850048e044e76a4dfb4dec7f (diff)
downloadtxr-3dba6ca7c542fefb2124340f948a0b10eea94b91.tar.gz
txr-3dba6ca7c542fefb2124340f948a0b10eea94b91.tar.bz2
txr-3dba6ca7c542fefb2124340f948a0b10eea94b91.zip
exceptions: use uw_rthrow for non-error exceptions.
* eval.c (eval_exception): This function is shared by warnings and errors. Use uw_throw. The eval_error caller already has an abort() after its eval_exception call, which makes that code path continue to be equivalent to uw_throw. The behavior changes for the other caller, eval_warn, which will now return if the warning is not handled. (eval_defr_warn, gather_free_refs, gather_free_refs_nw): Throw non-error exception with uw_rthrow. * match.c (v_throw, v_assert, h_assert): Use uw_rthrow for these directives, just like the throw function. * parser.c (repl_intr, repl_warning): Use uw_rthrow. * unwind.c (uw_muffle_warning, uw_release_deferred_warnings): Likewise.
Diffstat (limited to 'match.c')
-rw-r--r--match.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/match.c b/match.c
index c3e71388..39e0dfa2 100644
--- a/match.c
+++ b/match.c
@@ -4092,7 +4092,7 @@ static val v_throw(match_files_ctx *c)
{
val values = mapcar(pa_123_2(func_n3(txeval_allow_ub),
specline, c->bindings), args);
- uw_throw(type, values);
+ return uw_rthrow(type, values);
}
}
@@ -4311,7 +4311,7 @@ static val v_assert(match_files_ctx *c)
} else if (type) {
val values = mapcar(pa_123_2(func_n3(txeval_allow_ub),
specline, c->bindings), args);
- uw_throw(type, values);
+ uw_rthrow(type, values);
} else {
if (c->curfile)
typed_error(assert_s, first_spec, lit("assertion (at ~a:~d)"), c->curfile, c->data_lineno, nao);
@@ -4548,7 +4548,7 @@ static val h_assert(match_line_ctx *c)
} else if (type) {
val values = mapcar(pa_123_2(func_n3(txeval_allow_ub),
c->specline, c->bindings), elem);
- uw_throw(type, values);
+ uw_rthrow(type, values);
} else {
if (c->file)
typed_error(assert_s, elem, lit("assertion (at ~a:~d)"), c->file, c->data_lineno, nao);