[squeak-dev] replaceFrom:to:with:startingAt:

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Sep 22 20:47:03 UTC 2014


2014-09-22 22:34 GMT+02:00 Bert Freudenberg <bert at freudenbergs.de>:

>
> On 22.09.2014, at 22:21, Ron Teitelbaum <ron at usmedrec.com> wrote:
>
> >
> >> From: Bert Freudenberg
> >> Sent: Monday, September 22, 2014 4:00 PM
> >>
> >> I just found out why PNG decoding was broken in SqueakJS [*]. Wouldn't
> >> have believed that any code actually relied on the following behavior:
> >>
> >>      | a |
> >>      a := (1 to: 20) asArray.
> >>      a replaceFrom: 11 to: 20 with: a startingAt: 8.
> >>
> >>      ==> #(1 2 3 4 5 6 7 8 9 10 8 9 10 8 9 10 8 9 10 8)
> >>
> > That's funky!  Hope it wasn't my code!  Seems wrong to not copy the array
> > before modifying it  (Like your buggy VM did).
>
> It's not a copy. It moved the numbers 8-17 to index 11. Which is what I
> erroneously had assumed to be the desired behavior.
>
> - Bert -
>
>
It's a known problem.
The primitive should use memmove rather than memcpy.
So the solution is quite simple, it's just that it's waiting for a good
soul to integrate it.



> > Ron
> >
> >> In my (buggy) VM it answered
> >>
> >>      ==> #(1 2 3 4 5 6 7 8 9 10 8 9 10 11 12 13 14 15 16 17)
> >>
> >> which apparently did not at all match what The Creators intended ;)
> >>
> >> - Bert -
> >>
> >> [*] specifically, #decompressBlock:with:
> >
> >
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140922/73eaa1cf/attachment.htm


More information about the Squeak-dev mailing list