~ chicken-core (chicken-5) 37706c9e55fd9cb9d18b2068c80ccd722c9c142d


commit 37706c9e55fd9cb9d18b2068c80ccd722c9c142d
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Sep 7 10:58:44 2010 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Tue Sep 7 10:58:44 2010 +0200

    safer proc check for cfold

diff --git a/support.scm b/support.scm
index 2edaeebe..cfc2261b 100644
--- a/support.scm
+++ b/support.scm
@@ -1405,9 +1405,12 @@ EOF
 	  (debugging 'o "folding constant expression failed" form)
 	  (k #f form #f))
       ;; op must have toplevel binding, result must be single-valued
-      (let ((result (apply (##sys#slot op 0) args)))
-	(debugging 'o "folded constant expression" form)
-	(k #t form result)))))
+      (let ((proc (##sys#slot op 0)))
+	(if (procedure? proc)
+	    (let ((result (apply proc args)))
+	      (debugging 'o "folded constant expression" form)
+	      (k #t form result))
+	    (bomb "attempt to constant-fold call to non-procedure" form))))))
 
 
 ;;; Dump node structure:
Trap