diff --git a/ChangeLog b/ChangeLog index c41ed7021..2c73a657d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-01-26 Stefan Bidigaray + + * Source/NSLocale.m: Add currency code to locale identifier, if present. + * Source/NSDateFormatter.m: Fix crash on dealloc because of autoreleased + object. + 2011-01-26 Stefan Bidigaray * Source/NSLocale.m: Minor memory mgt fixes. diff --git a/Source/NSDateFormatter.m b/Source/NSDateFormatter.m index 028f52c3d..cb77cf659 100644 --- a/Source/NSDateFormatter.m +++ b/Source/NSDateFormatter.m @@ -105,7 +105,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0; udat_toPattern (_formatter, 0, value, length, &err); } - _dateFormat = [NSString stringWithCharacters: value length: length]; + _dateFormat = [[NSString alloc] initWithCharacters: value length: length]; if (length > BUFFER_SIZE) NSZoneFree ([self zone], value); diff --git a/Source/NSLocale.m b/Source/NSLocale.m index 379f35131..61f5fa8ad 100644 --- a/Source/NSLocale.m +++ b/Source/NSLocale.m @@ -541,6 +541,7 @@ static NSRecursiveLock *classLock = nil; [[[dict objectForKey: NSLocaleCalendar] calendarIdentifier] UTF8String]; const char *collation = [[dict objectForKey: NSLocaleCollationIdentifier] UTF8String]; + const char *currency = [[dict objectForKey: NSLocaleCurrencyCode] UTF8String]; // A locale cannot be constructed without a language. if (language == NULL) @@ -552,16 +553,22 @@ static NSRecursiveLock *classLock = nil; // I'm not using uloc_setKeywordValue() here because the format is easy // enough to reproduce and has the added advatange that we doesn't need ICU. + if (calendar || calendar || currency) + [string appendString: @"@"]; if (calendar) - [string appendFormat: @"@calendar=%s", calendar]; + [string appendFormat: @"calendar=%s", calendar]; if (collation) { if (calendar) [string appendString: @";"]; - else - [string appendString: @"@"]; [string appendFormat: @"collation=%s", collation]; } + if (currency) + { + if (calendar || currency) + [string appendString: @";"]; + [string appendFormat: @"currency=%s", currency]; + } result = [NSString stringWithString: string]; RELEASE(string); @@ -858,7 +865,7 @@ static NSRecursiveLock *classLock = nil; else result = @"U.S."; } - ulocdata_close (localeDate); + ulocdata_close (localeData); return result; #else return nil;