summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-11-04 21:54:56 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-11-04 21:54:56 -0700
commite122eb60bcf9188535d42d83e472b64c90b447b4 (patch)
tree6f9f23b2fe631aaa75b01c378799eb43050314f0
parent708a6d5e5fa76d1a5a2d955abfd911af8ff946ac (diff)
downloadtxr-e122eb60bcf9188535d42d83e472b64c90b447b4.tar.gz
txr-e122eb60bcf9188535d42d83e472b64c90b447b4.tar.bz2
txr-e122eb60bcf9188535d42d83e472b64c90b447b4.zip
Don't track macro origin of interned objects.
* eval.c (set_origin): If either form or origin isn't a heap object, or is an interned symbol, then don't record the relationship.
-rw-r--r--eval.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 33f1af51..ec7af348 100644
--- a/eval.c
+++ b/eval.c
@@ -239,7 +239,9 @@ val lookup_origin(val form)
static val set_origin(val form, val origin)
{
- if (origin && form != origin)
+ if (origin && form != origin && is_ptr(form) &&
+ (!symbolp(form) || !symbol_package(form)) &&
+ is_ptr(origin) && (!symbolp(origin) || !symbol_package(origin)))
sethash(origin_hash, form, origin);
return form;
}