X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Freader.lisp;h=27ec01a06356b400097d5dce0411eda911789aca;hb=bd2df60f7c3f579a9c7610925c79a0e783adaa0e;hp=e6652f3e144cc2d8f647a92465ebd4addb57f54c;hpb=89f3ce96b6c5d0b80308be2a8145aefe80fe1e9b;p=sbcl.git diff --git a/src/code/reader.lisp b/src/code/reader.lisp index e6652f3..27ec01a 100644 --- a/src/code/reader.lisp +++ b/src/code/reader.lisp @@ -292,8 +292,8 @@ standard Lisp readtable when NIL." (values fun-value ;; NON-TERMINATING-P return value: (if fun-value - (or (constituentp char) - (not (terminating-macrop char))) + (or (constituentp char designated-readtable) + (not (terminating-macrop char designated-readtable))) ;; ANSI's definition of GET-MACRO-CHARACTER says this ;; value is NIL when CHAR is not a macro character. ;; I.e. this value means not just "non-terminating @@ -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*))