Bug 44204

Critical

GemStone/S 64 Bit

3.2

3.2.1

SymbolKeyValueDictionary >> at:ifAbsent: and includesKey: silent lookup failures

In earlier versions, SymbolKeyValueDictionary inherited the implementation
of a number of methods from its superclass. When these methods were added
to SymbolKeyValueDictionary in 3.2 for optimization, there was a coding
error in the implementation of the at:ifAbsent: method. This also affects
includesKey:, which relies on at:ifAbsent:.

Workaround

Filein the following as SystemUser, and commit

method: SymbolKeyValueDictionary
at: aKey ifAbsent: aBlock

 (Symbol _existingWithAll: aKey) ifNil:[
 aBlock ifNil:[^ self _errorKeyNotFound: aKey ] .
 ^ aBlock value
 ] ifNotNil:[ :sym |
 ^ super at: sym ifAbsent: aBlock
 ]
%


Last updated: 5/19/14