Under SBCL, floating-point numbers were printing incorrectly.
e.g. (format t "~A" 12.34) was printing 12.1234!
The equivalent string literals were ok.
Investigation found that SBCL prints floats as
(write-string "1234" 0 3)
(write-char #\.)
(write-string "1234" 3 nil)
This last call was incorrectly handled by the IF.
I assume it was meant as an optimization...
(buffer-output user-stream character))
(defmethod trivial-gray-streams:stream-write-string ((user-stream user-stream) seq &optional start end)
- (if (and start end)
- (buffer-output user-stream (subseq seq start end))
- (buffer-output user-stream seq)))
+ (buffer-output user-stream (subseq seq start end)))
(defmethod trivial-gray-streams:stream-write-sequence ((user-stream user-stream) seq start end &key)
(buffer-output user-stream (subseq seq start end)))