diff --git a/src/lsp/arraylib.lsp b/src/lsp/arraylib.lsp index a21bf12a7..b904aaa15 100644 --- a/src/lsp/arraylib.lsp +++ b/src/lsp/arraylib.lsp @@ -351,13 +351,12 @@ adjustable array." (push :element-type r))) (let ((x (apply #'make-array new-dimensions :adjustable t r))) (declare (array x)) - (do ((cursor (make-list (length new-dimensions) :initial-element 0))) - (nil) - (when (apply #'array-in-bounds-p array cursor) - (apply #'aset (apply #'aref array cursor) - x - cursor)) - (when (increment-cursor cursor new-dimensions) - (return nil))) + (unless displaced-to + (do ((cursor (make-list (length new-dimensions) :initial-element 0))) + (nil) + (when (apply #'array-in-bounds-p array cursor) + (apply #'aset (apply #'aref array cursor) x cursor)) + (when (increment-cursor cursor new-dimensions) + (return nil)))) (sys:replace-array array x) ))