From 65d972a7a6b98c7f4b7ac5802c3a13466aa77ece Mon Sep 17 00:00:00 2001 From: CaS Date: Thu, 5 Dec 2002 10:16:46 +0000 Subject: [PATCH] Locale fix git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15255 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSUserDefaults.m | 26 ++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4cdc5c991..5ca1d5bc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-12-05 Richard Frith-Macdonald + + * Source/NSUserDefaults.m: Fix uninitialised local variable 'locale' + which was causing a crash ... not 100% sure my fix is making the code + work as intended. Could Adam please check it? + 2002-12-04 Adam Fedor * Headers/gnustep/base/GSLocale.h: Add category arg to diff --git a/Source/NSUserDefaults.m b/Source/NSUserDefaults.m index fb24ce1df..7ffea932a 100644 --- a/Source/NSUserDefaults.m +++ b/Source/NSUserDefaults.m @@ -435,22 +435,29 @@ static BOOL setSharedDefaults = NO; /* Flag to prevent infinite recursion */ } else if (added_locale == NO) { - NSString *locale; + NSString *locale = nil; + #ifdef HAVE_LOCALE_H locale = GSSetLocale(LC_MESSAGES, nil); #endif if (locale == nil) - continue; + { + continue; + } /* See if we can get the dictionary from i18n functions. Note that we get the dict from the current locale regardless of what 'lang' is, since it should match anyway. */ /* Also, I don't think that the i18n routines can handle more than one locale, but tell me if I'm wrong... */ if (GSLanguageFromLocale(locale)) - lang = GSLanguageFromLocale(locale); + { + lang = GSLanguageFromLocale(locale); + } dict = GSDomainFromDefaultLocale(); - if (dict) - [sharedDefaults setVolatileDomain: dict forName: lang]; + if (dict != nil) + { + [sharedDefaults setVolatileDomain: dict forName: lang]; + } added_locale = YES; } } @@ -475,8 +482,11 @@ static BOOL setSharedDefaults = NO; /* Flag to prevent infinite recursion */ + (NSArray*) userLanguages { NSArray *currLang = nil; - NSString *locale; + NSString *locale = nil; +#ifdef HAVE_LOCALE_H + locale = GSSetLocale(LC_MESSAGES, nil); +#endif [classLock lock]; if (userLanguages != nil) { @@ -516,12 +526,12 @@ static BOOL setSharedDefaults = NO; /* Flag to prevent infinite recursion */ currLang = [[self standardUserDefaults] stringArrayForKey: @"NSLanguages"]; } - if (currLang == nil && locale != 0 && GSLanguageFromLocale(locale)) + if (currLang == nil && locale != nil && GSLanguageFromLocale(locale)) { currLang = [NSArray arrayWithObject: GSLanguageFromLocale(locale)]; } #ifdef __MINGW__ - if (currLang == nil && locale != 0) + if (currLang == nil && locale != nil) { /* Check for language as the first part of the locale string */ NSRange under = [locale rangeOfString: @"_"];