> > Well....it seems I found the problem. And in fact, it has alredy been 
> > solved by Levente in Squeak...I waste so many hours...and the fix was 
> > there..
> >
> > So, can you try changing to
> >
> > sizeFor: numberOfElements
> >     "Return the minimum capacity of a dictionary that can hold 
> > numberOfElements elements. At least 25% of the array must be empty and the 
> > return value must be a power of 2."
> >
> >     ^(numberOfElements * 4 // 3) asLargerPowerOfTwo max: 1
> >
> >
> > And see if it works?  it works here…
> 
> It should not be necessary.
> The real bug is that Integer >> isPowerOfTwo does not check for the edge case:
> 
> 0 isPowerOfTwo true
> 
> A small fix:
> 
> Integer >> #isPowerOfTwo
>        "Return true if the receiver is an integral power of two."
>        ^ self ~= 0 and: [(self bitAnd: self-1) = 0]
> 
> 
> Indeed :)
> now...even if that's correct, do you think there could be side effect in 
> other places?

Excellent! We should also put a big comment in the comment!

Stef

Reply via email to