[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