From: Christophe Rhodes Date: Thu, 17 Oct 2002 14:15:24 +0000 (+0000) Subject: 0.7.8.43: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=15a5894721592fc295cc61c607c59875ec5825a2;p=sbcl.git 0.7.8.43: Merge Gerd Moellmann's fix for Entomotomy bug remove-malfunctions-with-start-end-and-from-end (from cmucl-imp 2002-10-12) ... add a skeletal test file, too --- diff --git a/src/code/seq.lisp b/src/code/seq.lisp index 8d09e37..e602e10 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -1269,17 +1269,19 @@ `(let* ((sequence ,(if reverse? '(reverse (the list sequence)) 'sequence)) + (%start ,(if reverse? '(- length end) 'start)) + (%end ,(if reverse? '(- length start) 'end)) (splice (list nil)) (results (do ((index 0 (1+ index)) (before-start splice)) - ((= index (the fixnum start)) before-start) + ((= index (the fixnum %start)) before-start) (declare (fixnum index)) (setq splice (cdr (rplacd splice (list (pop sequence)))))))) - (do ((index start (1+ index)) + (do ((index %start (1+ index)) (this-element) (number-zapped 0)) - ((or (= index (the fixnum end)) (= number-zapped (the fixnum count))) + ((or (= index (the fixnum %end)) (= number-zapped (the fixnum count))) (do ((index index (1+ index))) ((null sequence) ,(if reverse? diff --git a/tests/seq.pure.lisp b/tests/seq.pure.lisp new file mode 100644 index 0000000..0ca3b1f --- /dev/null +++ b/tests/seq.pure.lisp @@ -0,0 +1,20 @@ +;;;; tests related to sequences + +;;;; This software is part of the SBCL system. See the README file for +;;;; more information. +;;;; +;;;; While most of SBCL is derived from the CMU CL system, the test +;;;; files (like this one) were written from scratch after the fork +;;;; from CMU CL. +;;;; +;;;; This software is in the public domain and is provided with +;;;; absolutely no warranty. See the COPYING and CREDITS files for +;;;; more information. + +(let* ((orig '(1 2 3 2 6 1 2 4 1 3 2 7)) + (x (copy-seq orig)) + (y (remove 3 x :from-end t :start 1 :end 5)) + (z (remove 2 x :from-end t :start 1 :end 5))) + (assert (equalp orig x)) + (assert (equalp y '(1 2 2 6 1 2 4 1 3 2 7))) + (assert (equalp z '(1 3 6 1 2 4 1 3 2 7)))) diff --git a/version.lisp-expr b/version.lisp-expr index c688b7e..ce592d3 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.8.42" +"0.7.8.43"