diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-07-06 06:01:01 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-07-06 06:01:01 -0700 |
commit | 7a926eb8da998fba873900fadc4f2fa179e7319f (patch) | |
tree | 67617f9cf2c4cb0bedc03c70d6c82da0d6a92a67 /match.h | |
parent | da442bbb28b7df94d730aba0ed46064ff2ffd9cb (diff) | |
download | txr-7a926eb8da998fba873900fadc4f2fa179e7319f.tar.gz txr-7a926eb8da998fba873900fadc4f2fa179e7319f.tar.bz2 txr-7a926eb8da998fba873900fadc4f2fa179e7319f.zip |
unwind: refer to top-level *stderr* stream.
Exception processing should refer to the original, top-level
value of *stderr* rather than the current dynamic value, even
if unwinding has not yet taken place. Using the dynamic value
can not only cause critical output to disappear, but it leads
to a false positive identification of the "unhandled exception
in early initialization" situation, a diagnostic which is
emitted on the C stderr if the Lisp one is unavailable,
which is assumed to be due to initialization not having
yet completed.
* stream.c (top_stderr): New global variable.
(stream_init): GC-protect top_stderr, and initialize it with
the same object that goes into the *stderr* top-level binding.
* stream.h (top_stderr): Declared.
* unwind.c (uw_unwind_to_exit_point, uw_rthrow): Use
top_stderr instead of std_error macro.
Diffstat (limited to 'match.h')
0 files changed, 0 insertions, 0 deletions