X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=strings.lisp;h=a9b3d0f9b320a95126b206348e852d812ea8a9b2;hp=0c5ae7c4ec47407e0e77b358a1bf4c713dee89b2;hb=09816397bfa39bd4b3c85e9f5fc05d30b073bacb;hpb=78b62107690123d8d7a1a400e4a1d744408a05b1 diff --git a/strings.lisp b/strings.lisp index 0c5ae7c..a9b3d0f 100644 --- a/strings.lisp +++ b/strings.lisp @@ -227,17 +227,20 @@ list of characters and replacement strings." (defun make-usb8-array (len) (make-array len :element-type '(unsigned-byte 8))) -(defun usb8-array-to-string (vec) - (declare (type (simple-array (unsigned-byte 8) (*)) vec)) - (let* ((len (length vec)) +(defun usb8-array-to-string (vec &key (start 0) end) + (declare (type (simple-array (unsigned-byte 8) (*)) vec) + (fixnum start)) + (unless end + (setq end (length vec))) + (let* ((len (- end start)) (str (make-string len))) (declare (fixnum len) (simple-string str) - (optimize (speed 3))) + (optimize (speed 3) (safety 0))) (do ((i 0 (1+ i))) ((= i len) str) (declare (fixnum i)) - (setf (schar str i) (code-char (aref vec i)))))) + (setf (schar str i) (code-char (aref vec (the fixnum (+ i start)))))))) (defun string-to-usb8-array (str) (declare (simple-string str))