user-stream bugfix
authorD Herring <dherring@at.tentpost.dot.com>
Fri, 11 Nov 2011 04:19:59 +0000 (23:19 -0500)
committerD Herring <dherring@at.tentpost.dot.com>
Fri, 11 Nov 2011 04:19:59 +0000 (23:19 -0500)
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...

main.lisp

index c22d881..cd8efe1 100644 (file)
--- a/main.lisp
+++ b/main.lisp
   (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)))