<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
2014-07-22 1:29 GMT+02:00  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span>:<div class=""><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Nicolas Cellier uploaded a new version of Graphics to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Graphics-nice.296.mcz" target="_blank">http://source.squeak.org/trunk/Graphics-nice.296.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Graphics-nice.296<br>
Author: nice<br>
Time: 22 July 2014, 1:28:48.356 am<br>
UUID: 3f6d869e-9929-4e08-b137-aae22dd3eee6<br>
Ancestors: Graphics-nice.295<br>
<br>
Don&#39;t try to accelerate GIF reading by copying the stream in memory.<br>
This should be the purpose of a decent file buffering policy, and if ever that was not the case, then we should fix the file buffering policy rather than trying to patch each and every client site.<br>
<br>
Especially when the patch is testing that the stream is in memory with a class identity to ReadWriteStream!!!<br>
Frankly, how do we know that it&#39;s not a RWBinaryOrTextStream ;)<br>
<br>
So why reading an image with a ReadWriteStream?<br>
Oh, sure, this is in ImageReadWriter, so we may need a ReadWriteStream?<br>
No, no, and no!<br>
This thing will either read or write but NEVER read and write.<br>
One simple role, one simple class, no UberPotentSwissKnifeStream with UberComplexStateToManage (readPosition + writePosition + readLimit + writeLimit + readBuffer + writeBuffer + readWriteBufferInteraction).<br>
<br>
What&#39;s coming next?<br>
Easy to guess, see what (ImageReadWriter&gt;&gt;on:) does frivously to our stream:<br>
reset??? Hey, ImageReadWriter, why do you take the responsibility to reset the stream? Did you ask the permission? Did you think of possible side effects?<br></blockquote><div><br></div></div><div>the answer is summarized there:<br>

<br>readNativeResourceFrom: byteStream<br>    | img aStream |<br>    (byteStream isKindOf: FileStream) ifTrue:[<br>        &quot;Ugly, but ImageReadWriter will send #reset which is implemented as #reopen and we may not be able to do so.&quot;<br>

        aStream := RWBinaryOrTextStream with: byteStream contents.<br>    ] ifFalse:[<br>        aStream := byteStream.<br>    ].<br><br></div><div>Ugly says it all.<br></div></div></div></div></blockquote><div><br></div>
<div>Why not dispatch to byteStream then?</div><div><br></div></div></div></div>