From 75545f661901820811acd2f93d70ca908cf3a32d Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Thu, 11 Mar 2010 21:03:51 +0100 Subject: [PATCH] A few charcode bugfixes. --- charcode.lisp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/charcode.lisp b/charcode.lisp index 1d52dae..6c08f42 100644 --- a/charcode.lisp +++ b/charcode.lisp @@ -99,7 +99,7 @@ (with-slots (decoder back buffer read-pos) stream (let ((readbuf (make-array (list len) :element-type '(unsigned-byte 8)))) (loop (unless (< (- (length buffer) read-pos) len) (return t)) - (let ((readlen (read-sequence readbuf back))) + (let ((readlen (read-sequence readbuf back :end (- len (- (length buffer) read-pos))))) (when (= readlen 0) (return-from ccs-ensure-buffer nil)) (funcall decoder readbuf buffer :end readlen)))))) @@ -108,8 +108,8 @@ (declare (type codec-character-stream stream)) (with-slots (read-pos buffer) stream (replace buffer buffer :start2 read-pos) - (setf (fill-pointer buffer) (- (fill-pointer buffer) read-pos) - read-pos 0))) + (setf (fill-pointer buffer) (- (fill-pointer buffer) read-pos) + read-pos 0))) (defmethod stream-read-char ((stream codec-character-stream)) (unless (ccs-ensure-buffer stream 1) @@ -127,8 +127,7 @@ (adjust-array buffer (list (setf (fill-pointer buffer) (+ len 16))))) (replace buffer buffer :start1 16 :end2 len))) - (setf (aref buffer read-pos) char) - (decf read-pos) + (setf (aref buffer (decf read-pos)) char) nil)) (defun ccs-wont-hang-p (stream) -- 2.11.0