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
commitc525f31d57e34175a8a24da03d5caadc5ca0317b (patch)
tree6f9f23b2fe631aaa75b01c378799eb43050314f0
parent2cb0235152f9c40af23ddcc6aaa6e36a21932494 (diff)
downloadtxr-c525f31d57e34175a8a24da03d5caadc5ca0317b.tar.gz
txr-c525f31d57e34175a8a24da03d5caadc5ca0317b.tar.bz2
txr-c525f31d57e34175a8a24da03d5caadc5ca0317b.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;
}