From 1b1e8b311b87bbe7aadb0f7ab4f5f590a5558ba0 Mon Sep 17 00:00:00 2001 From: Vasilij Schneidermann Date: Mon, 18 Mar 2024 02:06:27 +0100 Subject: [PATCH] Correct read-bytevector logic for small reads --- lib/scheme/extras.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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)))