[Pharo-project] latest build yields stack trace running #cleanUpForProduction

Stéphane Ducasse stephane.ducasse at inria.fr
Wed Jan 18 14:32:23 CET 2012


> > 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


More information about the Pharo-project mailing list