:format-arguments (list stream)))
(defun closed-flame (stream &rest ignore)
(declare (ignore ignore))
- (error "~S is closed." stream))
+ (error 'closed-stream-error :stream stream))
(defun no-op-placeholder (&rest ignore)
(declare (ignore ignore)))
\f
:start2 %frc-index% :end2 pos)
(setf %frc-index% (1+ pos)))
(done-with-fast-read-char)
- (return-from ansi-stream-read-line-from-frc-buffer res)))
+ (return-from ansi-stream-read-line-from-frc-buffer (values res (null pos)))))
(add-chunk ()
(let* ((end (length %frc-buffer%))
(len (- end %frc-index%))
(flet ((replace-all (fun)
(let ((start 0))
(declare (index start))
- (dolist (buffer (nreverse prev))
+ (setf prev (nreverse prev))
+ (dolist (buffer prev)
(funcall fun buffer start)
(incf start (length buffer)))
(funcall fun this start)
(incf start (length this))
(dolist (buffer next)
(funcall fun buffer start)
- (incf start (length buffer))))))
+ (incf start (length buffer)))
+ ;; Hack: erase the pointers to strings, to make it less
+ ;; likely that the conservative GC will accidentally
+ ;; retain the buffers.
+ (fill prev nil)
+ (fill next nil))))
(macrolet ((frob (type)
`(replace-all (lambda (buffer from)
(declare (type ,type result)