On 7 juin 2013, at 11:19, Pharo Issue Tracker wrote:

> A FogBugz case was edited by Stephane Ducasse.
> 
> Case ID:      10840
> Title:        WeakSet>>#size utterly broken
> Status:       Resolved (Fix Review Needed)
> Category:     Bug
> Project:      Collection
> Area:         Misc
> Priority:     3 - Must Fix
> Milestone:    Pharo3.0: 30/03/2014
> Assigned To:  Camille Teruel
> 
> URL:          https://pharo.fogbugz.com/f/cases/10840
> 
> Last message:
> Please can you send a mail to the mailing-list so that we all discuss this 
> problems.

Hello everyone,

WeakSet>>#size is broken as demonstrated by the following snippet:

set := WeakSet new.
set add: Object new.
Smalltalk garbageCollect.
set size. "answers 1 instead of 0"

That is because a WeakSet has no mean to know when its items get garbage 
collected, and thus the tally cannot be updated.
So we need to override #size in Weak, I propose:
size
        | counter |
        counter := 0.
        self do: [ :e | counter := counter + 1 ].
        ^ counter
But that it rather inefficient for such a simple query.
Any proposition?

The bug entry is: https://pharo.fogbugz.com/f/cases/10840

> 
> 
> If you do not want to receive automatic notifications anymore, change your 
> preferences in the Options screen. 
> (https://pharo.fogbugz.com/default.asp?pg=pgPrefs)

Reply via email to