[Vm-dev] primitiveTranslateStringWithTable

Florin Mateoc florin.mateoc at gmail.com
Wed Apr 21 12:53:45 UTC 2021


Hi Nicolas,

I did try it. After making sure a string was not interned, ( "Symbol
findInterned: 'test123'" return nil ), I did

| s | s := #TEST123.
s translateToLowercase.
Symbol findInterned: s

and the resulting s is a Symbol and it is not interned

Florin

On Wed, Apr 21, 2021 at 2:06 AM Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> wrote:

>
> Hi Florin,
> did you try it? It should fail if passing a literal
> (ModificationForbidden).
> I see that it's only ever sent to copy asString, for case translation
> or converting lineEndings...
>
> Le mer. 21 avr. 2021 à 01:17, Florin Mateoc <florin.mateoc at gmail.com> a
> écrit :
> >
> >
> > Hi,
> >
> > While looking at some of the more exotic primitives, I stumbled upon
> this little gem.
> > I think it's bad enough that it modifies strings in place (some of those
> could be method literals), but it even modifies symbols in place, without
> adding them to the symbol table.
> >
> > I would say this is a bug, I don't think symbols should be modified in
> place (other than by the #intern: method), but this does not look
> unintentional - apparently ByteSymbol class >> #translate:from:to:table:
> was added specifically to make the primitive work on symbols too.
> >
> > Does anybody have any insight into this, is this functionality
> (modifying symbols in place) used anywhere?
> >
> > Thank you,
> > Florin
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20210421/3e486cee/attachment.html>


More information about the Vm-dev mailing list