diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-07-17 20:19:17 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-07-17 20:19:17 -0700 |
commit | a1b37dbbff94493db56b600338b5b76ba2ae2313 (patch) | |
tree | da04b7c71caed3e23b008bbb892e106ce609e501 /eval.c | |
parent | ef239fb96066c558fd8965dce8ab923162f5519e (diff) | |
download | txr-a1b37dbbff94493db56b600338b5b76ba2ae2313.tar.gz txr-a1b37dbbff94493db56b600338b5b76ba2ae2313.tar.bz2 txr-a1b37dbbff94493db56b600338b5b76ba2ae2313.zip |
bug: compiled code keeps seeing var clobbered by symacro.
* eval.c (op_defsymacro, rt_defsymacro): We must call
vm_invalidate_binding so the VM forgets a cached binding
for this variable.
* tests/019/redef.tl: Test added.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -2162,6 +2162,7 @@ static val op_defsymacro(val form, val env) if (!opt_compat || opt_compat > 143) remhash(special, sym); sethash(top_smb, sym, second(args)); + vm_invalidate_binding(sym); return sym; } @@ -2171,6 +2172,7 @@ static val rt_defsymacro(val sym, val def) remhash(top_vb, sym); remhash(special, sym); sethash(top_smb, sym, def); + vm_invalidate_binding(sym); return sym; } |