diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-07-28 22:56:12 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-07-28 22:56:12 -0700 |
commit | fab098e65ffe56e3fce5ffa2ae30f127b569476d (patch) | |
tree | 626fc82be8b9bfa907dc3f79cbc6b6d74f465f3d | |
parent | 3993e7473a1a7eba4181c8cc6e16255d76b8bf52 (diff) | |
download | txr-fab098e65ffe56e3fce5ffa2ae30f127b569476d.tar.gz txr-fab098e65ffe56e3fce5ffa2ae30f127b569476d.tar.bz2 txr-fab098e65ffe56e3fce5ffa2ae30f127b569476d.zip |
unwind: bind *print-circle* to t in error trace.
* eval.c (error_trace): Push a new dynamic environment and
bind *print-circle* to t. More could be done here like
setting object limits.
-rw-r--r-- | eval.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -416,6 +416,9 @@ void error_trace(val exsym, val exvals, val out_stream, val prefix) val xlast = uw_last_form_expanded(); val info = source_loc_str(last, nil); val max_length = nil, max_depth = nil; + val saved_de = set_dyn_env(make_env(nil, nil, dyn_env)); + + env_vbind(dyn_env, print_circle_s, t); uw_dump_deferred_warnings(out_stream); @@ -513,6 +516,8 @@ void error_trace(val exsym, val exvals, val out_stream, val prefix) set_max_length(out_stream, max_length); set_max_depth(out_stream, max_depth); } + + dyn_env = saved_de; } val lookup_global_var(val sym) |