Stream.st
changeset 23892 99bbfe4d920f
parent 23738 a71468439dc7
child 23893 0273fd434361
--- a/Stream.st	Wed Mar 13 10:31:51 2019 +0100
+++ b/Stream.st	Wed Mar 13 12:01:21 2019 +0100
@@ -748,7 +748,7 @@
         buffer:= ExternalBytes unprotectedNew:bufferSize.
         freeBuffer := true.
     ] ifFalse:[
-        buffer := self contentsSpecies new:bufferSize.
+        buffer := bufferSpecies new:bufferSize.
         freeBuffer := false.
     ].
 
@@ -783,11 +783,13 @@
         ].
         "Note: atEnd will block if reading from an empty pipe or socket.
          avoid atEnd if possible, because it reads a single byte."
-        bytesLeft ~~ 0 or:[self atEnd not]
-    ] whileTrue.
+        (bytesLeft == 0) or:[readCount == 0 and:[self atEnd]]
+    ] whileFalse.
 
     freeBuffer ifTrue:[ buffer free ].
     ^ countWritten.
+
+    "Modified: / 13-03-2019 / 12:00:46 / Claus Gittinger"
 !
 
 copyToEndFrom:inStream
@@ -839,7 +841,7 @@
         buffer:= ExternalBytes unprotectedNew:bufferSize.
         freeBuffer := true.
     ] ifFalse:[
-        buffer := self contentsSpecies new:bufferSize.
+        buffer := bufferSpecies new:bufferSize.
         freeBuffer := false.
     ].
 
@@ -886,6 +888,8 @@
       #(1 2 3 a 'b' 6.4 true) readStream next; copyToEndInto:#() writeStream inspect.
 
     "
+
+    "Modified: / 13-03-2019 / 11:54:17 / Claus Gittinger"
 ! !
 
 !Stream methodsFor:'non homogenous reading'!