From 70b20e891b5376a4295484b47ec5aade92ec9c08 Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Wed, 7 Jul 2021 12:00:44 -0400 Subject: [PATCH] Fix %concatenate-to-vector --- src/code/seq.lisp | 9 +++++---- tests/vector.pure.lisp | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/code/seq.lisp b/src/code/seq.lisp index f2a5c3fc4..ccd62b00a 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -1169,10 +1169,11 @@ many elements are copied." (declare (index length)) (do-rest-arg ((seq) sequences) (incf length (length seq))) - (let ((result (sb-vm::allocate-vector-with-widetag #+ubsan nil - widetag length nil)) - (setter (the function (svref %%data-vector-setters%% widetag))) - (index 0)) + (let* ((n-bits-shift (aref sb-vm::%%simple-array-n-bits-shifts%% widetag)) + (result (sb-vm::allocate-vector-with-widetag + #+ubsan nil widetag length n-bits-shift)) + (setter (the function (svref %%data-vector-setters%% widetag))) + (index 0)) (declare (index index)) (do-rest-arg ((seq) sequences) (sb-sequence:dosequence (e seq) diff --git a/tests/vector.pure.lisp b/tests/vector.pure.lisp index 94b28bcea..2770eadcd 100644 --- a/tests/vector.pure.lisp +++ b/tests/vector.pure.lisp @@ -69,3 +69,7 @@ (setf (fill-pointer x) 0))) (make-array 2 :adjustable t)) type-error)) + +(with-test (:name :concatenate-to-vector) + (assert (sb-kernel:%concatenate-to-vector sb-vm:simple-bit-vector-widetag + '(1 1) '(1 0))))