[squeak-dev] Recent change in byte array at:put:

Bert Freudenberg bert at freudenbergs.de
Mon Jul 31 09:09:41 UTC 2017

On Sat 29. Jul 2017 at 21:16, tim Rowledge <tim at rowledge.org> wrote:

> We recently changed ByteArray>at:put: to remove the backup conversion of
> the value to integer, for what seemed like decent reasons.
> It’s broken my WeatherStation code a little because there are places where
> I use
> {my byte stream} nextPutAll: (aString squeakToUtf8)
> or similar. #squeakToUtf8 returns a bytestring, and of course when the
> #nextPutAll: loop does its thing each character is pulled out as a
> Character (even though we know at this point it’s a byte value) - and we’ve
> just made it impossible to stick a character into a byte array.
> Clearly I could fix it reasonably trivially with a few #asByteArray type
> messages scattered around but it feels a bit tacky somehow. I see some
> faintly similar code with plausibly similar issues in WebSocket classes
> too, which would need some care. Not that I can see a lot of usage of that
> code…
> Performance isn’t a colossal issue for MQTT packets but it just rankles a
> bit to have a known byte valued string and then have to convert it to write
> it into a byte valued stream collection. KnowWhadIMean?

It only worked accidentally - you can't put text in a binary stream. So
either use a string stream or you put a byte array.

It may make sense to create a #asUtf8Bytes method ... or maybe a
#nextPutAllUtf8: which could avoid the extra copy.

- Bert -

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20170731/391f3495/attachment.html>

More information about the Squeak-dev mailing list