summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2023-07-28 22:56:12 -0700
committerKaz Kylheku <kaz@kylheku.com>2023-07-28 22:56:12 -0700
commitfab098e65ffe56e3fce5ffa2ae30f127b569476d (patch)
tree626fc82be8b9bfa907dc3f79cbc6b6d74f465f3d
parent3993e7473a1a7eba4181c8cc6e16255d76b8bf52 (diff)
downloadtxr-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.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 57d6dede..399e3aa8 100644
--- a/eval.c
+++ b/eval.c
@@ -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)