summaryrefslogtreecommitdiffstats
path: root/ftw.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-07-06 06:01:01 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-07-06 06:01:01 -0700
commit7a926eb8da998fba873900fadc4f2fa179e7319f (patch)
tree67617f9cf2c4cb0bedc03c70d6c82da0d6a92a67 /ftw.h
parentda442bbb28b7df94d730aba0ed46064ff2ffd9cb (diff)
downloadtxr-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 'ftw.h')
0 files changed, 0 insertions, 0 deletions