2010/10/12 Gary Chambers <[email protected]>:
> Hi all, I've encountered a problem with FreeType with respect to the new
> finalization scheme.
> http://code.google.com/p/pharo/issues/detail?id=3096
> Regards, Gary
>

FT2HandleRegistry overrides following method:

add: anObject
        "Add anObject to the receiver. Store the object as well as the
associated executor."
        | executor dup |
        executor := anObject executor.
        dup := nil.
        self protected:[
                dup := valueDictionary detect: [ :v | v handle = executor 
handle ]
ifNone: [ ].
                valueDictionary at: anObject put: executor.
        ].
        dup ifNotNil: [ self error: 'Duplicate object added!'. self remove: 
anObject ].
        ^anObject


As i see, the intent is to prevent registering a same handle twice,
so in own turn, when time will come, a #finalize won't attempt to
destroy same handle twice.

The proposed fix (as you wrote in issue tracker)

registry
        ^Registry ifNil: [ Registry := WeakRegistry new]

appears to fix the problem...

But apparently its not the same as in original.
Okay, but since we never seen  the error: 'Duplicate object added!',
then i think it may work without it :)

Still, it would be good to know, how handles are created, and what the
chances that they could be duplicated.

-- 
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to