diff --git a/ChangeLog b/ChangeLog index 54a16eff4..8162f11a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,11 @@ * Source/NSDecimalNumber.m ([initWithBytes:objCType:]): Implement initialization with scalar types. Use GSPrivateDefaultLocale to initialze intermediate string to match expectations of - initWithString. + initWithString. + (NSDecimalNumberClass): Added local class cache. + ([+initialize]): Initialize new cache. + ([-compare]): Test for all subclasses instead of only NSDecimalNumber + instances. 2007-11-30 Richard Frith-Macdonald diff --git a/Source/NSDecimalNumber.m b/Source/NSDecimalNumber.m index 73ac0703c..8a32c88b7 100644 --- a/Source/NSDecimalNumber.m +++ b/Source/NSDecimalNumber.m @@ -144,6 +144,7 @@ static NSDecimalNumberHandler *handler; @implementation NSDecimalNumber +static Class NSDecimalNumberClass; static NSDecimalNumber *maxNumber; static NSDecimalNumber *minNumber; static NSDecimalNumber *notANumber; @@ -166,6 +167,7 @@ static NSDecimalNumber *one; one = [[self alloc] initWithMantissa: 1 exponent: 0 isNegative: NO]; + NSDecimalNumberClass = [NSDecimalNumber class]; } + (id ) defaultBehavior @@ -583,7 +585,7 @@ static NSDecimalNumber *one; - (NSComparisonResult) compare: (NSNumber*)decimalNumber { - if ([decimalNumber isMemberOfClass: [self class]]) + if ([decimalNumber isKindOfClass: NSDecimalNumberClass]) { NSDecimal d1 = [self decimalValue]; NSDecimal d2 = [(NSDecimalNumber*)decimalNumber decimalValue];