Fix calls to read-bytevector! that weren't aware of EOF values.
authorChris Hanson <org/chris-hanson/cph>
Sat, 29 Jun 2019 21:21:52 +0000 (14:21 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sat, 29 Jun 2019 21:21:52 +0000 (14:21 -0700)
src/edwin/sendmail.scm
src/imail/imail-util.scm
src/runtime/http-io.scm

index 560acafb44abfeb44c03db306f165586c44dc63f..c658af9a924df4140776de13d6984b659bcd98b6 100644 (file)
@@ -1464,7 +1464,7 @@ the user from the mailer."
                  (let ((buffer (make-bytevector 4096)))
                    (let loop ()
                      (let ((n-read (read-bytevector! buffer input-port)))
-                       (if (> n-read 0)
+                       (if (exact-positive-integer? n-read)
                            (begin
                              (encode-base64:update context buffer 0 n-read)
                              (loop))))))))
index d6cef5f4223fd2a8f4739157dfde383f1ad07e71..4324071202a6ce2c69ad31fd2af482a555e8a009 100644 (file)
@@ -431,7 +431,7 @@ USA.
             (nread (read-bytevector! buffer port)))
        ;; Check to make sure that the length didn't change under us
        ;; while we were reading.  If it did, this is no good.
-       (and (= nread length)
+       (and (eqv? nread length)
             (object-new-type type-code:legacy-string buffer))))))
 
 (define (string-port/position port)
index 11246ddfbedd75967a450d8017e1fb9a47155790..12fdeb81f555d57a6e700ed69fa3ecb1f50a8a61 100644 (file)
@@ -300,7 +300,7 @@ USA.
     (let loop ((n n))
       (if (> n 0)
          (let ((m (read-bytevector! buffer port 0 (min n len))))
-           (if (= m 0)
+           (if (not (exact-positive-integer? m))
                (error "Premature EOF in HTTP message body."))
            (do ((i 0 (+ i 1)))
                ((not (< i m)))
@@ -329,7 +329,7 @@ USA.
      (let ((buffer (make-bytevector #x1000)))
        (let loop ()
         (let ((n (read-bytevector! buffer port)))
-          (if (> n 0)
+          (if (exact-positive-integer? n)
               (begin
                 (do ((i 0 (+ i 1)))
                     ((not (< i n)))