0.8.1.34:
[sbcl.git] / src / code / string.lisp
index cc32c65..f5aa2fa 100644 (file)
 ;;; strings in the unasterisked versions and using this in the
 ;;; transforms conditional on SAFETY>SPEED,SPACE).
 (defun %check-vector-sequence-bounds (vector start end)
-  (declare (type vector vector)
-          (type index start)
-          (type (or index null) end))
-  (let ((length (length vector)))
-    (if (<= 0 start (or end length) length)
-       (or end length)
-       (signal-bounding-indices-bad-error string start end))))
+  (%check-vector-sequence-bounds vector start end))
 
 (eval-when (:compile-toplevel)
 ;;; WITH-ONE-STRING is used to set up some string hacking things. The
   (using char-equal) of the two strings. Otherwise, returns ()."
   (string-not-greaterp* string1 string2 start1 end1 start2 end2))
 
-(defun make-string (count &key element-type ((:initial-element fill-char)))
+(defun make-string (count &key
+                   (element-type 'character)
+                   ((:initial-element fill-char)))
   #!+sb-doc
   "Given a character count and an optional fill character, makes and returns
-   a new string Count long filled with the fill character."
-  (declare (fixnum count)
-          (ignore element-type))
+   a new string COUNT long filled with the fill character."
+  (declare (fixnum count))
   (if fill-char
-      (do ((i 0 (1+ i))
-          (string (make-string count)))
-         ((= i count) string)
-       (declare (fixnum i))
-       (setf (schar string i) fill-char))
-      (make-string count)))
+      (make-string count :element-type element-type :initial-element fill-char)
+      (make-string count :element-type element-type)))
 
 (flet ((%upcase (string start end)
         (declare (string string) (index start) (type sequence-end end))