summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-10-11 08:23:44 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-10-11 08:23:44 -0700
commite1608fed99cb278d322a27f68c5cb7458934544d (patch)
treee83944be826090afa5711c6034194a77770a16dd /eval.c
parent2838fb0ab11336c46bb3ed43a147c1cdf843630d (diff)
downloadtxr-e1608fed99cb278d322a27f68c5cb7458934544d.tar.gz
txr-e1608fed99cb278d322a27f68c5cb7458934544d.tar.bz2
txr-e1608fed99cb278d322a27f68c5cb7458934544d.zip
expander: origin_hash must be eq-based.
* eval.c (eval_init): Initialize origin_hash as eq-based hash table, not eql-based. The main culprit are range #R(x y) objects. eql equality recurses over these, and if it encounters a circular one like #R(#1# #1#), it crashes.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 68cc5d0e..e01c41e1 100644
--- a/eval.c
+++ b/eval.c
@@ -6141,7 +6141,7 @@ void eval_init(void)
call_f = func_n1v(generic_funcall);
- origin_hash = make_hash(t, nil, nil);
+ origin_hash = make_eq_hash(t, nil);
dwim_s = intern(lit("dwim"), user_package);
progn_s = intern(lit("progn"), user_package);