1.0.17.21: LIST-FILL* return value (regression 1.0.12.16)
[sbcl.git] / src / code / seq.lisp
index 8fe9d9f..7cf17f4 100644 (file)
           (setf pointer (nthcdr (1- start) pointer)))
         (if pointer
             (pop pointer)
-            (oops))
-        (if end
-            (let ((n (- end start)))
-              (declare (integer n))
-              (when (minusp n)
-                (oops))
-              (when (plusp n)
-                (loop repeat n
-                      do (rplaca pointer item))))
-            (loop while pointer
-                  do (setf pointer (cdr (rplaca pointer item)))))))))
+            (oops)))
+      (if end
+          (let ((n (- end start)))
+            (declare (integer n))
+            (when (minusp n)
+              (oops))
+            (when (plusp n)
+              (loop repeat n
+                    do (setf pointer (cdr (rplaca pointer item))))))
+          (loop while pointer
+                do (setf pointer (cdr (rplaca pointer item)))))))
+  sequence)
 
 (defun vector-fill* (sequence item start end)
   (with-array-data ((data sequence)
                                             (frob sequence t)
                                             (frob sequence nil))))
                        (typecase sequence
-                         (simple-vector (frob2))
-                         (simple-base-string (frob2))
+                         #!+sb-unicode
+                         ((simple-array character (*)) (frob2))
+                         ((simple-array base-char (*)) (frob2))
                          (t (vector*-frob sequence))))
                    (declare (type (or index null) p))
                    (values f (and p (the index (- p offset)))))))))