runtime/binary-port (close-binary-output-port): Close output chan.
authorMatt Birkholz <matt@birchwood-abbey.net>
Sun, 30 Jul 2017 22:39:21 +0000 (15:39 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Sun, 30 Jul 2017 22:39:21 +0000 (15:39 -0700)
Close-binary-output-port was not closing the output channel of a
binary IO port when input and output channels were not the same
(e.g. when the port is the IO of a subprocess).  Close-binary-input-
port seemed to have the same thinko.

src/runtime/binary-port.scm

index 785e0c550fd960e9b094b1fb8b898bbfa53231e6..6d544e5b63db02abdf5702b56b46ec96b8085727 100644 (file)
@@ -255,8 +255,8 @@ USA.
       (if (and ic
               (let ((ob (port-output-buffer port)))
                 (or (not ob)
-                    (and (eqv? ic (buffer-channel ob))
-                         (buffer-marked-closed? ob)))))
+                    (not (eqv? ic (buffer-channel ob)))
+                    (not (buffer-marked-closed? ob)))))
          (channel-close ic)))))
 
 (define (close-binary-output-port port)
@@ -266,8 +266,8 @@ USA.
       (if (and oc
               (let ((ib (port-input-buffer port)))
                 (or (not ib)
-                    (and (eqv? oc (buffer-channel ib))
-                         (buffer-marked-closed? ib)))))
+                    (not (eqv? oc (buffer-channel ib)))
+                    (not (buffer-marked-closed? ib)))))
          (channel-close oc)))))
 \f
 ;;;; Positioning