On Jan 18, 2012, at 12:14 47PM, Mariano Martinez Peck wrote: > 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] Cheers, Henry