[Openmcl-cvs-notifications] r14788 - /trunk/source/lib/sequences.lisp
gb at clozure.com
gb at clozure.com
Sat May 7 03:34:16 CDT 2011
Author: gb
Date: Sat May 7 03:34:15 2011
New Revision: 14788
Log:
In SOME-XX-MULTI, traverse the list of sequences in a way that
doesn't require us to try to find the current sequence via MEMQ;
this could affect the wrong sequence if some sequences shared
structure (and wasn't the smartest thing to do even if they didn't.)
Fixes ticket:859.
Modified:
trunk/source/lib/sequences.lisp
Modified: trunk/source/lib/sequences.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lib/sequences.lisp (original)
+++ trunk/source/lib/sequences.lisp Sat May 7 03:34:15 2011
@@ -599,13 +599,16 @@
(setq min-vector-length (min min-vector-length
(length seq)))))
(dotimes (index min-vector-length)
- (dolist (one-seq sequences)
+ (do* ((sequences sequences (cdr sequences))
+ (one-seq (car sequences) (car sequences)))
+ ((null sequences))
+ (declare (list sequences))
(%rplaca cur-slice
(if (vectorp one-seq)
(aref one-seq index)
(if one-seq
(progn
- (%rplaca (memq one-seq sequences) (cdr one-seq))
+ (setf (car sequences) (cdr one-seq))
(%car one-seq))
(return-from some-xx-multi at-end))))
(setq cur-slice (%cdr cur-slice)))
More information about the Openmcl-cvs-notifications
mailing list