summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-20 20:55:43 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-20 20:55:43 -0700
commitf4d72d5d69d7317bf4e0aa172f1f122bb89210b0 (patch)
treebd0503a34e2fac51534cf76beed2236690c24e5f
parent5782eb24f96d01fba6d2a98a6b6e9dff04042bd7 (diff)
downloadtxr-f4d72d5d69d7317bf4e0aa172f1f122bb89210b0.tar.gz
txr-f4d72d5d69d7317bf4e0aa172f1f122bb89210b0.tar.bz2
txr-f4d72d5d69d7317bf4e0aa172f1f122bb89210b0.zip
compiler: lambda bug: wrong reg in defaulting.
* share/txr/stdlib/compiler.tl (compiler comp-lambda): To determine whether the argument is missing, we must test it for equivalence to the : symbol. What we're testing here is the wrong thing: the register which will hold the output of the default initform. That fragment would even be executed yet at this spot in the code, never mind being the wrong value to test.
-rw-r--r--share/txr/stdlib/compiler.tl2
1 files changed, 1 insertions, 1 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index c65acb56..986902a3 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -398,7 +398,7 @@
(lskip (gensym "l")))
^(,*(if have-sym
^((mov ,have-bind.loc ,tee-reg)))
- (ifq ,ifrg.oreg ,col-reg ,lskip)
+ (ifq ,vbind.loc ,col-reg ,lskip)
,*(if have-sym
^((mov ,have-bind.loc nil)))
,*ifrg.code