diff --git a/code/sysmacs.lisp b/code/sysmacs.lisp index 05040375b0ef9aad17859786fa2e5c0e209f21c5..92d75355a460c73ebca0382a6599ce1cf3f61992 100644 --- a/code/sysmacs.lisp +++ b/code/sysmacs.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sysmacs.lisp,v 1.14 1993/06/24 13:49:30 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sysmacs.lisp,v 1.15 1993/08/06 13:02:53 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -43,12 +43,14 @@ (n-evalue `(the (or index null) ,evalue))) `(multiple-value-bind (,data-var ,start-var ,end-var ,offset-var) - (if (typep ,n-array '(simple-array * (*))) - ,(once-only ((n-len `(length ,n-array)) - (n-end `(or ,n-evalue ,n-len))) - `(if (<= ,n-svalue ,n-end ,n-len) - (values ,n-array ,n-svalue ,n-end 0) - (%with-array-data ,n-array ,n-svalue ,n-evalue))) + (if (not (array-header-p ,n-array)) + (let ((,n-array ,n-array)) + (declare (type (simple-array * (*)) ,n-array)) + ,(once-only ((n-len `(length ,n-array)) + (n-end `(or ,n-evalue ,n-len))) + `(if (<= ,n-svalue ,n-end ,n-len) + (values ,n-array ,n-svalue ,n-end 0) + (%with-array-data ,n-array ,n-svalue ,n-evalue)))) (%with-array-data ,n-array ,n-svalue ,n-evalue)) (declare (ignorable ,offset-var)) ,@forms)))