From 7d94e4b2e24f22de9e12908ff610d4ac7823e1f9 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 16 Mar 2018 20:13:44 -0700 Subject: 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. --- share/txr/stdlib/compiler.tl | 2 ++ 1 file changed, 2 insertions(+) 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] -- cgit v1.2.3