From 5d6eb238f2d59e6df825cb03aefe2976a130c6ec Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Thu, 31 Oct 2002 13:56:55 +0000 Subject: [PATCH] 0.7.9.21: 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 | 6 +++--- tests/array.pure.lisp | 8 ++++++++ version.lisp-expr | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/code/seq.lisp b/src/code/seq.lisp index 9446dc8..77e232e 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -500,12 +500,12 @@ (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) @@ -531,7 +531,7 @@ (list-reverse-macro sequence)) (defun vector-reverse* (sequence) - (vector-reverse sequence (type-of sequence))) + (vector-reverse sequence)) ;;;; NREVERSE diff --git a/tests/array.pure.lisp b/tests/array.pure.lisp index 513a6d8..0c01319 100644 --- a/tests/array.pure.lisp +++ b/tests/array.pure.lisp @@ -79,3 +79,11 @@ (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 diff --git a/version.lisp-expr b/version.lisp-expr index 02450cc..7b01e65 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4