summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-04-24 19:52:49 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-04-24 19:52:49 -0700
commitef1234d530a0caa244778f62f3ec3d9cc295628e (patch)
treea83f2c64c7f560ac46abf0967ed9a5077bc25f2d /share
parente22a0b6c8669ed065d4b02d8cabc7246753c8ce2 (diff)
downloadtxr-ef1234d530a0caa244778f62f3ec3d9cc295628e.tar.gz
txr-ef1234d530a0caa244778f62f3ec3d9cc295628e.tar.bz2
txr-ef1234d530a0caa244778f62f3ec3d9cc295628e.zip
compiler: bug: return miscompiled as abscond.
Oops; (return x), equivalent to (return-from nil x), is being miscompiled as if it were (sys:abscond-from nil x). * share/txr/stdlib/compiler.tl (comp-return): When short-circuit-recursing into comp-return-from, put return-from into the operator position, because that function checks for that symbol.
Diffstat (limited to 'share')
-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 3b04293f..34dc3128 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -598,7 +598,7 @@
(defmeth compiler comp-return (me oreg env form)
(mac-param-bind form (op : value) form
- me.(comp-return-from oreg env ^(,op nil ,value))))
+ me.(comp-return-from oreg env ^(return-from nil ,value))))
(defmeth compiler comp-handler-bind (me oreg env form)
(mac-param-bind form (op func-form ex-syms . body) form