Comment 1 for bug 643686

Revision history for this message
Nikodemus Siivola (nikodemus) wrote :

The issue is with external format input routines not returning until EOF or till the requested amount of characters is read.

Without testing the effect of this properly, it seems to me that

 diff --git a/src/code/fd-stream.lisp b/src/code/fd-stream.lisp
 index 969b177..5145258 100644
 --- a/src/code/fd-stream.lisp
 +++ b/src/code/fd-stream.lisp
 @@ -1546,8 +1546,8 @@
                  (return-from ,in-function total-copied)))
              (setf (buffer-head ibuf) head)
              ;; Maybe we need to refill the stream buffer.
 - (cond ( ;; If there were enough data in the stream buffer, we're done.
 - (= total-copied requested)
 + (cond ( ;; If was data in the stream buffer, we're done.
 + (plusp total-copied)
                     (return total-copied))
                    ( ;; If EOF, we're done in another way.
                     (or (eq decode-break-reason 'eof)

is TRT -- at least it solves the reported case. (Here's hoping launchpad doesn't mangle that too badly...)