diff --git a/lib/scheme/extras.scm b/lib/scheme/extras.scm index b87ce396..9796a0e1 100644 --- a/lib/scheme/extras.scm +++ b/lib/scheme/extras.scm @@ -135,9 +135,11 @@ (if (zero? n) #u8() (let ((in (if (pair? o) (car o) (current-input-port))) - (res (make-bytevector n))) - (read-bytevector! res in) - res))) + (vec (make-bytevector n)) + (res (read-bytevector! vec in))) + (cond ((eof-object? res) res) + ((< res n) (subbytes vec 0 i)) + (else res))))) (define (read-bytevector! vec . o) (let* ((in (if (pair? o) (car o) (current-input-port)))