[squeak-dev] A nitpick

Eliot Miranda eliot.miranda at gmail.com
Tue May 6 22:02:08 UTC 2014


Thanks Yoshiki,

    I'm committing this now


On Tue, May 6, 2014 at 2:09 PM, Yoshiki Ohshima <Yoshiki.Ohshima at acm.org>wrote:

> This can be a nitpick of the year, but there is a bug in
> InflateStream>>decompressBlock:with:
>
> There is a part that reads (toward the end):
>
> ------------------------
> collection
>         replaceFrom: readLimit+1
>         to: readLimit + length + 1
>         with: collection
>         startingAt: readLimit - distance + 1.
> ------------------------
>
> but here we want to replace "length" bytes in collection, as opposed
> to length + 1 bytes, so it has to say:
>
> ------------------------
> collection
>         replaceFrom: readLimit+1
>         to: readLimit + length
>         with: collection
>         startingAt: readLimit - distance + 1.
> ------------------------
>
> (So is the non-primitive version in FastInflateStream.)
>
> The reason it does not matter is that replaceFrom:to:with:startingAt:
> does not care about the source and destination being the same and
> overlap between them.  Even when the above bug puts one extra bytes in
> collection temporarily, the extra byte will be wiped out in the next
> iteration of the loop surrounding it.  However, if you try to port
> this to a language that does the "right thing" when there is an
> overlap, it manifests as a bug.
>
> -- Yoshiki
>
> P.S.
> It was a "rare" delight to point out a bug in Andreas' code^^; We miss
> you.
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140506/8f0b5066/attachment.htm


More information about the Squeak-dev mailing list