From d7650e59779b72fecacd088889f551ad4ae04249 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Thu, 23 Nov 2017 14:32:48 +0300 Subject: [PATCH] Fix bit-position-overrun on 32-bit. Apply mask-signed-field to the address or it won't be a fixnum for higher addresses. --- tests/bit-vector.impure-cload.lisp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/bit-vector.impure-cload.lisp b/tests/bit-vector.impure-cload.lisp index 53fba713c..73b353815 100644 --- a/tests/bit-vector.impure-cload.lisp +++ b/tests/bit-vector.impure-cload.lisp @@ -133,7 +133,10 @@ (setf (sb-sys:sap-ref-word addr sb-vm:n-word-bytes) (ash n-bits sb-vm:n-fixnum-tag-bits)) (multiple-value-bind (object widetag size) - (sb-vm::reconstitute-object (ash (sb-sys:sap-int addr) (- sb-vm:n-fixnum-tag-bits))) + (sb-vm::reconstitute-object (sb-c::mask-signed-field + sb-vm:n-fixnum-bits + (ash (sb-sys:sap-int addr) + (- sb-vm:n-fixnum-tag-bits)))) (declare (ignore widetag)) (assert (simple-bit-vector-p object)) (assert (= size n-bytes)) -- 2.11.4.GIT