From: Alexey D. <ade...@us...> - 2005-01-18 04:35:10
|
Update of /cvsroot/sbcl/sbcl/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15428/tests Modified Files: compiler.pure.lisp Log Message: 0.8.18.35: * Fix overflow in DATA-VECTOR-SET-C VOPs for simple bit vectors on X86 (reported by Timmy Douglas). Index: compiler.pure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/compiler.pure.lisp,v retrieving revision 1.113 retrieving revision 1.114 diff -u -d -r1.113 -r1.114 --- compiler.pure.lisp 15 Jan 2005 09:19:46 -0000 1.113 +++ compiler.pure.lisp 18 Jan 2005 04:34:57 -0000 1.114 @@ -1675,3 +1675,19 @@ (with-simple-restart (blah "blah") (error "blah")))))) (handler-bind ((error (lambda (c) (invoke-restart 'blah)))) (assert (equal (multiple-value-list (funcall f)) '(nil t))))) + +;;; Bug reported by Timmy Douglas: overflow in bit vector setter with +;;; constant index and value. +(let* ((n (* 2 sb-vm::n-word-bits)) + (array1 (make-array n :element-type 'bit)) + (array2 (make-array n :element-type 'bit))) + (dotimes (i n) + (dotimes (v 2) + (let ((f (compile nil `(lambda (a) + (declare (type (simple-array bit (,n)) a)) + (setf (bit a ,i) ,v))))) + (fill array1 (- 1 v)) + (fill array2 (- 1 v)) + (funcall f array1) + (setf (aref array2 i) v) + (assert (equal array1 array2)))))) |