diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-01-22 20:24:45 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-01-22 20:24:45 -0800 |
commit | aab13f6369fe8d1c1f6057ee1e0479ab8af45997 (patch) | |
tree | 039129a37dc092412010a2705af550b4c726b708 /match.c | |
parent | 41a513cf5d74413f6a1d5956eae6cc833c852abc (diff) | |
download | txr-aab13f6369fe8d1c1f6057ee1e0479ab8af45997.tar.gz txr-aab13f6369fe8d1c1f6057ee1e0479ab8af45997.tar.bz2 txr-aab13f6369fe8d1c1f6057ee1e0479ab8af45997.zip |
Semantics fix: unhandled exceptions must still unwind.
* unwind.c (unhandled_ex): New static structure.
(unwind_to_exit_point): The code to print the unhandled exception info
and bail the process is moved here out of uw_throw. We do this in the
situation when we have an unhandled exception, which is represented
by the fact that the exception pointer points to the unhandled_ex
structure.
(uw_throw): If unhandled hook isn't a function, we don't abort; we go
through the unwinding and unhandled processing. Also, ditto if the
unhandled function returns, ditto. Unhandled processing is entered
by substituting unhandled_ex for the not-found exception, and
allowing unwind_to_exit point to be called.
* txr.1: Document new behavior for unhandled exceptions
and *unhandled-hook*.
Diffstat (limited to 'match.c')
0 files changed, 0 insertions, 0 deletions