From a8955ba8c11b0c5bc9072a037706dbbadc773d87 Mon Sep 17 00:00:00 2001 From: CaS Date: Mon, 30 Sep 2002 17:14:51 +0000 Subject: [PATCH] Tidyups git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@14608 72102866-910b-0410-8b05-ffd578937521 --- Source/NSTimeZone.m | 46 ++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/Source/NSTimeZone.m b/Source/NSTimeZone.m index 8f004b22c..ee2ffeac7 100644 --- a/Source/NSTimeZone.m +++ b/Source/NSTimeZone.m @@ -321,6 +321,8 @@ decode (const void *ptr) if ([name isEqual: @"NSLocalTimeZone"]) { zone = RETAIN(localTimeZone); + DESTROY(self); + return zone; } /* @@ -469,6 +471,11 @@ decode (const void *ptr) return [[NSTimeZoneClass defaultTimeZone] timeZoneDetailForDate: date]; } +- (NSString*) timeZoneName +{ + return [[NSTimeZoneClass defaultTimeZone] timeZoneName]; +} + @end @implementation NSConcreteAbsoluteTimeZone @@ -860,14 +867,25 @@ static NSMapTable *absolutes = 0; */ + (void) setDefaultTimeZone: (NSTimeZone*)aTimeZone { - if (zone_mutex != nil) + if (aTimeZone != defaultTimeZone) { - [zone_mutex lock]; - } - ASSIGN(defaultTimeZone, aTimeZone); - if (zone_mutex != nil) - { - [zone_mutex unlock]; + /* + * We can't make the localTimeZone the default since that would + * cause recursion ... + */ + if (aTimeZone == localTimeZone) + { + aTimeZone = [self systemTimeZone]; + } + if (zone_mutex != nil) + { + [zone_mutex lock]; + } + ASSIGN(defaultTimeZone, aTimeZone); + if (zone_mutex != nil) + { + [zone_mutex unlock]; + } } } @@ -1011,7 +1029,7 @@ static NSMapTable *absolutes = 0; NSTimeZone *zone; zone = [self timeZoneWithName: [[self abbreviationDictionary] - objectForKey: abbreviation]]; + objectForKey: abbreviation] data: nil]; return zone; } @@ -1022,7 +1040,7 @@ static NSMapTable *absolutes = 0; { NSTimeZone *zone; - zone = [defaultPlaceholderTimeZone initWithName: aTimeZoneName]; + zone = [defaultPlaceholderTimeZone initWithName: aTimeZoneName data: nil]; return AUTORELEASE(zone); } @@ -1031,8 +1049,10 @@ static NSMapTable *absolutes = 0; */ + (NSTimeZone*) timeZoneWithName: (NSString*)name data: (NSData*)data { - [self notImplemented: _cmd]; - return nil; + NSTimeZone *zone; + + zone = [defaultPlaceholderTimeZone initWithName: name data: nil]; + return AUTORELEASE(zone); } /** @@ -1081,7 +1101,7 @@ static NSMapTable *absolutes = 0; - (id) init { - return [self initWithName: @"NSLocalTimeZone"]; + return [self initWithName: @"NSLocalTimeZone" data: nil]; } - (id) initWithCoder: (NSCoder*)aDecoder @@ -1089,7 +1109,7 @@ static NSMapTable *absolutes = 0; NSString *name; name = [aDecoder decodeObject]; - self = [self initWithName: name]; + self = [self initWithName: name data: nil]; return self; }