[BUG] in FT2Handle class >> deregister

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[BUG] in FT2Handle class >> deregister

Damien Pollet
this method calls #remove:ifAbsent: on an instance of
IdentityDictionary which causes a shouldNotImplement error when
loading the FreeType Plus packages from universes in a squeak-dev-123
image.

--
Damien Pollet
type less, do more [ | ] http://typo.cdlm.fasmz.org

Reply | Threaded
Open this post in threaded view
|

Something odd in squeak-dev-beta-123? , (was Re: [BUG] in FT2Handle class >> deregister)

Andrew Tween
Hi Damien,
----- Original Message -----
From: "Damien Pollet" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>; "Andrew Tween" <[hidden email]>
Sent: Friday, May 25, 2007 2:08 PM
Subject: [BUG] in FT2Handle class >> deregister


> this method calls #remove:ifAbsent: on an instance of
> IdentityDictionary which causes a shouldNotImplement error when
> loading the FreeType Plus packages from universes in a squeak-dev-123
> image.

Thanks.
Somehow a class variable for a loaded class has been initialized to an
IdentityDictionary rather than to nil.
I think there is something odd going on in the squeak-dev-123 image.

The following code illustrates this...

    Object subclass: #TEST
         instanceVariableNames: ''
         classVariableNames: 'Registry'
         poolDictionaries: ''
         category: 'TEST'.
    (Smalltalk at: #TEST) classPool at: #Registry

It evaluates to an IdentityDictionary() in squeak-dev-beta-123.
But, in squeak-dev-beta-115, it evaluates to nil.

Why would a class var of a newly created class be initialized to an
IdentityDictionary, rather than to nil?

Cheers,
Andy


Reply | Threaded
Open this post in threaded view
|

Re: Something odd in squeak-dev-beta-123? , (was Re: [BUG] in FT2Handle class >> deregister)

Damien Cassou-3
2007/5/25, Andrew Tween <[hidden email]>:

> Hi Damien,
> ----- Original Message -----
> From: "Damien Pollet" <[hidden email]>
> To: "The general-purpose Squeak developers list"
> <[hidden email]>; "Andrew Tween" <[hidden email]>
> Sent: Friday, May 25, 2007 2:08 PM
> Subject: [BUG] in FT2Handle class >> deregister
>
>
> > this method calls #remove:ifAbsent: on an instance of
> > IdentityDictionary which causes a shouldNotImplement error when
> > loading the FreeType Plus packages from universes in a squeak-dev-123
> > image.
>
> Thanks.
> Somehow a class variable for a loaded class has been initialized to an
> IdentityDictionary rather than to nil.
> I think there is something odd going on in the squeak-dev-123 image.
>
> The following code illustrates this...
>
>     Object subclass: #TEST
>          instanceVariableNames: ''
>          classVariableNames: 'Registry'
>          poolDictionaries: ''
>          category: 'TEST'.
>     (Smalltalk at: #TEST) classPool at: #Registry
>
> It evaluates to an IdentityDictionary() in squeak-dev-beta-123.
> But, in squeak-dev-beta-115, it evaluates to nil.
>
> Why would a class var of a newly created class be initialized to an
> IdentityDictionary, rather than to nil?

What happens in a stock 3.10 image? I guess the problem comes from a
bug in 3.10.


--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: Something odd in squeak-dev-beta-123? , (was Re: [BUG] in FT2Handle class >> deregister)

Andrew Tween
Hi,
----- Original Message -----
From: "Damien Cassou" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Friday, May 25, 2007 8:16 PM
Subject: Re: Something odd in squeak-dev-beta-123? ,(was Re: [BUG] in FT2Handle
class >> deregister)

<snip>

> > Why would a class var of a newly created class be initialized to an
> > IdentityDictionary, rather than to nil?
>
> What happens in a stock 3.10 image? I guess the problem comes from a
> bug in 3.10.

You are right.

The Undeclared global in Squeak3.10alpha.7105 contains an entry for Registry.
This is caused by TTCFont class>>registry referencing a class var (Registry)
that has been deleted.
It can be fixed by evaluating...

    TTCFont class removeSelector: #registry.
    Undeclared removeUnreferencedKeys.

This then allows the FreeType Plus package to load without error.

Cheers,
Andy