<div dir="ltr">Consider this simple example:<div><br><div><font face="monospace">coll := OrderedCollection newFrom: #('apple' 'banana' 'cherry').<br>stream := ReadWriteStream on: coll.<br>stream next print.</font><br></div><div><br></div><div>I expected this to print <font face="monospace">apple</font> in the Transcript (and it does if I use a <font face="monospace">ReadStream</font>), but it prints <font face="monospace">nil</font>. The reason is that the <font face="monospace">on:</font> method of <font face="monospace">WriteStream</font>, which is the superclass of <font face="monospace">ReadWriteStream</font>, does this to set <font face="monospace">readLimit</font>:</div><div><br></div><div><font face="monospace">on: aCollection<br>    super on: aCollection thatCanBeModified.<br>    readLimit := 0.<br>    writeLimit := aCollection size</font><br clear="all"><div><br></div><div>The superclass <font face="monospace">PositionableStream on:</font> method sets <font face="monospace">readLimit</font> to the size of the collection (3 in this case), but here <font face="monospace">readLimit</font> is changed to zero. Why does it do that? This seems to prevent a <font face="monospace">ReadWriteStream</font> from reading.</div><div><br></div><div>I got some clues from the class command for <font face="monospace">ReadWriteStream</font> which says the following:</div><div><br></div><div>Instances are created on: aCollection, which is considered to be empty or filled with nil. Any contents will be ovewriten, and are not available for reading.<br>Instances can also be create with: aCollection. In this case, new contents will be added after this initial stuff. Reading them is only possible if position: is set appropriately (for instance aReadWriteStream position: 1).<br></div><div><br></div><div>Side note: There are two typos in the class comment. "overwriten" should be "overwritten" and "be create" should be "be created".</div><div><br></div><div>When I add "stream position: 1" I get "Error: Attempt to set the position of a PositionableStream out of bounds".</div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><font face="arial, helvetica, sans-serif">R. Mark Volkmann</font></div><div><span style="font-size:12.8000001907349px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div></div></div></div>