allObjectsDo: broken

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

allObjectsDo: broken

Adrian Lienhard
SystemNavigation default allObjectsDo: [ :e  ]

...never terminates. At least since this is broken since #10268cl.  
Version #10263 was still working.

The suspect are new closures (I guess, creating new context instances  
while iterating over all objects)...

http://code.google.com/p/pharo/issues/detail?id=851

Adrian



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: allObjectsDo: broken

Lukas Renggli
I played a bit with it. I came up with the following quick fix, but
probably Eliot has a better solution. I find that code quite fragile
anyway, if you instantiate an object in your enumeration block your
lost (that was already the case before) ...

allObjectsDo: aBlock
        "Evaluate the argument, aBlock, for each object in the system
        excluding SmallIntegers."
        | object |
        object := self someObject.
        [0 == object]
                whileFalse: [
                        (object class == MethodContext and: [ object closure == aBlock ])
                                ifFalse: [ aBlock value: object ].
                        object := object nextObject]

On Wed, May 27, 2009 at 10:53 PM, Adrian Lienhard <[hidden email]> wrote:

> SystemNavigation default allObjectsDo: [ :e  ]
>
> ...never terminates. At least since this is broken since #10268cl.
> Version #10263 was still working.
>
> The suspect are new closures (I guess, creating new context instances
> while iterating over all objects)...
>
> http://code.google.com/p/pharo/issues/detail?id=851
>
> Adrian
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: allObjectsDo: broken

Nicolas Cellier
There is also http://bugs.squeak.org/view.php?id=7313 to capitalize
these changes across forks.
From what I remember, Lukas' fix > Keithy's workaround.

Nicolas

2009/5/27 Lukas Renggli <[hidden email]>:

> I played a bit with it. I came up with the following quick fix, but
> probably Eliot has a better solution. I find that code quite fragile
> anyway, if you instantiate an object in your enumeration block your
> lost (that was already the case before) ...
>
> allObjectsDo: aBlock
>        "Evaluate the argument, aBlock, for each object in the system
>        excluding SmallIntegers."
>        | object |
>        object := self someObject.
>        [0 == object]
>                whileFalse: [
>                        (object class == MethodContext and: [ object closure == aBlock ])
>                                ifFalse: [ aBlock value: object ].
>                        object := object nextObject]
>
> On Wed, May 27, 2009 at 10:53 PM, Adrian Lienhard <[hidden email]> wrote:
>> SystemNavigation default allObjectsDo: [ :e  ]
>>
>> ...never terminates. At least since this is broken since #10268cl.
>> Version #10263 was still working.
>>
>> The suspect are new closures (I guess, creating new context instances
>> while iterating over all objects)...
>>
>> http://code.google.com/p/pharo/issues/detail?id=851
>>
>> Adrian
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

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