summaryrefslogtreecommitdiffstats
path: root/stream.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-04-16 01:53:16 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-04-16 01:53:16 -0700
commita46ef5d5b56f0ca6f69a36ddf131bc3b9658b758 (patch)
tree5ec107a2a0b96d2a4be447ea0b1923aa8eba10bc /stream.h
parentfc710c7dcc06df67a862109a07d5a30c3c7b8482 (diff)
downloadtxr-a46ef5d5b56f0ca6f69a36ddf131bc3b9658b758.tar.gz
txr-a46ef5d5b56f0ca6f69a36ddf131bc3b9658b758.tar.bz2
txr-a46ef5d5b56f0ca6f69a36ddf131bc3b9658b758.zip
compiler: frame level mismatch bug.
Repro test case: (defvar v) (defun f (: (v v))) (call (compile 'f)) ;; blows up * share/txr/stdlib/compiler.tl (compiler comp-lambda): The specials variable is wrongly used as a Boolean to decide whether we need an extra environment level for specials. The problem occurs when all of the specials are optional parameters. Optionals are handled specially and removed from the specials list. If all the specials are optional parameters, then the special list becomes empty. This cannot be intepreted as "there are no specials". The correct Boolean which indicates "there are specials" is need-dframe.
Diffstat (limited to 'stream.h')
0 files changed, 0 insertions, 0 deletions