X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Freader.lisp;h=308d3dd7ddcae82612a511d9dfff8058c1129824;hb=9dcde13065f57a8ad55681575a298fbcac66381b;hp=e6652f3e144cc2d8f647a92465ebd4addb57f54c;hpb=89f3ce96b6c5d0b80308be2a8145aefe80fe1e9b;p=sbcl.git diff --git a/src/code/reader.lisp b/src/code/reader.lisp index e6652f3..308d3dd 100644 --- a/src/code/reader.lisp +++ b/src/code/reader.lisp @@ -456,11 +456,13 @@ standard Lisp readtable when NIL." (declaim (inline ouch-read-buffer)) (defun ouch-read-buffer (char) ;; When buffer overflow - (when (>= *ouch-ptr* (length *read-buffer*)) + (let ((op *ouch-ptr*)) + (declare (optimize (sb!c::insert-array-bounds-checks 0))) + (when (>= op (length *read-buffer*)) ;; Size should be doubled. - (grow-read-buffer)) - (setf (elt *read-buffer* *ouch-ptr*) char) - (setq *ouch-ptr* (1+ *ouch-ptr*))) + (grow-read-buffer)) + (setf (elt *read-buffer* op) char) + (setq *ouch-ptr* (1+ op)))) (defun grow-read-buffer () (let* ((rbl (length *read-buffer*))