Blob Blame History Raw
diff --git a/srfi-4.scm b/srfi-4.scm
index 07ef84b..b1fea14 100644
--- a/srfi-4.scm
+++ b/srfi-4.scm
@@ -653,12 +653,12 @@ EOF
   (##sys#check-input-port port #t 'read-u8vector!)
   (##sys#check-exact start 'read-u8vector!)
   (##sys#check-structure dest 'u8vector 'read-u8vector!)
-  (let ((dest (##sys#slot dest 1)))
-    (when n
-      (##sys#check-exact n 'read-u8vector!)
-      (when (fx> (fx+ start n) (##sys#size dest))
-	(set! n (fx- (##sys#size dest) start))))
-    (##sys#read-string! n dest port start) ) )
+  (when n (##sys#check-exact n 'read-u8vector!))
+  (let* ((dest (##sys#slot dest 1))
+	 (size (##sys#size dest)))
+    (unless (and n (fx<= (fx+ start n) size))
+      (set! n (fx- size start)))
+    (##sys#read-string! n dest port start)))
 
 (define read-u8vector
   (let ()