Update of /project/movitz/cvsroot/movitz In directory clnet:/tmp/cvs-serv29414
Modified Files: special-operators-cl.lisp Log Message: For the block special operator, we need to ensure that the body-code resets the stack-pointer (which it won't, for result-mode :function). This fixes a hard crash on ansi-test assoc.25.
--- /project/movitz/cvsroot/movitz/special-operators-cl.lisp 2007/03/19 21:09:26 1.51 +++ /project/movitz/cvsroot/movitz/special-operators-cl.lisp 2007/04/02 20:54:34 1.52 @@ -9,7 +9,7 @@ ;;;; Created at: Fri Nov 24 16:31:11 2000 ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: special-operators-cl.lisp,v 1.51 2007/03/19 21:09:26 ffjeld Exp $ +;;;; $Id: special-operators-cl.lisp,v 1.52 2007/04/02 20:54:34 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -860,7 +860,9 @@ (compiler-values-bind (&code block-code &functional-p block-no-side-effects-p) (compiler-call #'compile-form :defaults forward - :result-mode block-result-mode + :result-mode (case block-result-mode + (:function :multiple-values) ; must restore stack + (t block-result-mode)) :form `(muerte.cl:progn ,@body) :env block-env) (let ((label-set-name (gensym "block-label-set-"))