From fab098e65ffe56e3fce5ffa2ae30f127b569476d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 28 Jul 2023 22:56:12 -0700 Subject: 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. --- eval.c | 5 +++++ 1 file changed, 5 insertions(+) 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) -- cgit v1.2.3