--- 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'!