diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-01-15 18:35:17 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-01-15 18:35:17 -0800 |
commit | 0ad39c1d30de392efaf24a70da00734ea49679e8 (patch) | |
tree | 236188a865a2e8dc6a395181c38844950535556e | |
parent | 06b285ac2c60fd5f8dd5eee24c794d7ef21fee46 (diff) | |
download | txr-0ad39c1d30de392efaf24a70da00734ea49679e8.tar.gz txr-0ad39c1d30de392efaf24a70da00734ea49679e8.tar.bz2 txr-0ad39c1d30de392efaf24a70da00734ea49679e8.zip |
Rebind *stderr* on entry into repl.
* parser.c (repl): Create a new dynamic env and
rebind *stderr* variable to the repl's output stream.
-rw-r--r-- | parser.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -945,6 +945,9 @@ val repl(val bindings, val in_stream, val out_stream) val multi_line_var = lookup_global_var(listener_multi_line_p_s); val sel_inclusive_var = lookup_global_var(listener_sel_inclusive_p_s); val rw_f = func_f1v(out_stream, repl_warning); + val saved_dyn_env = set_dyn_env(make_env(nil, nil, dyn_env)); + + env_vbind(dyn_env, stderr_s, out_stream); for (; bindings; bindings = cdr(bindings)) { val binding = car(bindings); @@ -1070,6 +1073,7 @@ val repl(val bindings, val in_stream, val out_stream) set_sig_handler(num(SIGINT), old_sig_handler); + dyn_env = saved_dyn_env; if (histfile_u8) lino_hist_save(ls, histfile_u8); |