~ chicken-core (chicken-5) 1114be676122a84d44bf8b479fd8a5d904b3c2d4
commit 1114be676122a84d44bf8b479fd8a5d904b3c2d4
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Jan 7 22:51:16 2013 +0100
Commit: Peter Bex <peter.bex@xs4all.nl>
CommitDate: Sat Jan 12 11:17:39 2013 +0100
Fix bug in lfa2 pass of compiler reported by Sven Hartrumpf:
The code walker in the lfa2 pass incorrectly assumed that ##core#inline_allocate forms have at least one argument, where in fact they may be called with zero arguments.
Signed-off-by: Peter Bex <peter.bex@xs4all.nl>
diff --git a/lfa2.scm b/lfa2.scm
index 473663ce..0fd256d5 100644
--- a/lfa2.scm
+++ b/lfa2.scm
@@ -337,8 +337,9 @@
'boolean)))))
((assoc (first params) +constructor-map+) =>
(lambda (a)
- (let ((arg1 (first subs)))
- (if (and (eq? '*struct* (cadr a))
+ (let ((arg1 (and (pair? subs) (first subs))))
+ (if (and arg1
+ (eq? '*struct* (cadr a))
(eq? 'quote (node-class arg1)))
(let ((tag (first (node-parameters arg1))))
(if (symbol? tag)
Trap