summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-16 20:13:44 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-16 20:13:44 -0700
commit7d94e4b2e24f22de9e12908ff610d4ac7823e1f9 (patch)
tree17469de90ac4a85c8a5159efca9c7115743aff90
parentd74778b6bf799cadf2f8de8b06e6e70e2ea733bb (diff)
downloadtxr-7d94e4b2e24f22de9e12908ff610d4ac7823e1f9.tar.gz
txr-7d94e4b2e24f22de9e12908ff610d4ac7823e1f9.tar.bz2
txr-7d94e4b2e24f22de9e12908ff610d4ac7823e1f9.zip
compiler: closure bug: (dframe ...) without (end ...).
* share/txr/stdlib/compiler.tl (compiler comp-lambda): When we have specials we must generate an extra (end ...), to terminate the (dframe ...) that we inserted.
-rw-r--r--share/txr/stdlib/compiler.tl2
1 files changed, 2 insertions, 0 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index 7842f558..f7ae0bc3 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -319,6 +319,8 @@
(dreg me.(get-dreg special)))
^(bindv ,sub-bind.loc ,dreg)))))
,*bfrag.code
+ ,*(if specials
+ ^((end ,bfrag.oreg)))
(end ,bfrag.oreg)
,lskip)
(uni [reduce-left uni ifrags nil .fvars]