X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fseq.lisp;h=cefc59b05f7012cadd7354c478b8c7bef7400569;hb=4603ca100a7d181fe4316429365fc725501336dd;hp=a5173aa1b77039f712916de0e7cdbb66446ec304;hpb=0152c2971917eed5117f5d6b53653bd8424b6b1f;p=sbcl.git diff --git a/src/code/seq.lisp b/src/code/seq.lisp index a5173aa..cefc59b 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -380,14 +380,16 @@ (end end) :check-fill-pointer t :force-inline t) - (let ((copy (%make-sequence-like sequence (- end start)))) + (let* ((copy (%make-sequence-like sequence (- end start))) + (setter (!find-data-vector-setter copy)) + (reffer (!find-data-vector-reffer data))) (declare (optimize (speed 3) (safety 0))) (do ((old-index start (1+ old-index)) (new-index 0 (1+ new-index))) ((= old-index end) copy) (declare (index old-index new-index)) - (setf (aref copy new-index) - (aref data old-index)))))) + (funcall setter copy new-index + (funcall reffer data old-index)))))) (defun list-subseq* (sequence start end) (declare (type list sequence)