0.7.9.21:
authorChristophe Rhodes <csr21@cam.ac.uk>
Thu, 31 Oct 2002 13:56:55 +0000 (13:56 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Thu, 31 Oct 2002 13:56:55 +0000 (13:56 +0000)
Fix REVERSE on vectors with fill pointers, which was left
broken by the sequence function overhaul
... error spotted by CVS version of clocc-ansi-test

src/code/seq.lisp
tests/array.pure.lisp
version.lisp-expr

index 9446dc8..77e232e 100644 (file)
 
 (eval-when (:compile-toplevel :execute)
 
-(sb!xc:defmacro vector-reverse (sequence type)
+(sb!xc:defmacro vector-reverse (sequence)
   `(let ((length (length ,sequence)))
      (declare (fixnum length))
      (do ((forward-index 0 (1+ forward-index))
          (backward-index (1- length) (1- backward-index))
-         (new-sequence (make-sequence ,type length)))
+         (new-sequence (make-sequence-like sequence length)))
         ((= forward-index length) new-sequence)
        (declare (fixnum forward-index backward-index))
        (setf (aref new-sequence forward-index)
   (list-reverse-macro sequence))
 
 (defun vector-reverse* (sequence)
-  (vector-reverse sequence (type-of sequence)))
+  (vector-reverse sequence))
 \f
 ;;;; NREVERSE
 
index 513a6d8..0c01319 100644 (file)
                                  (aref rmdr ,i)))
                       vector)
                      0))))
+
+;;; Following refactoring of sequence functions to detect bad type
+;;; specifiers, REVERSE was left broken on vectors with fill pointers.
+(let ((a (make-array 10
+                    :fill-pointer 5
+                    :element-type 'character
+                    :initial-contents "abcdefghij")))
+  (assert (string= (reverse a) "edcba")))
\ No newline at end of file
index 02450cc..7b01e65 100644 (file)
@@ -18,4 +18,4 @@
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.7.9.20"
+"0.7.9.21"