diff options
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp index 79dec79d2..6376bb31f 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp @@ -37,6 +37,7 @@ #include <string.h> #if PLATFORM(DARWIN) +#include "RetainPtr.h" #include <CoreFoundation/CoreFoundation.h> #endif @@ -60,11 +61,16 @@ std::auto_ptr<Collator> Collator::userDefault() { #if PLATFORM(DARWIN) && PLATFORM(CF) // Mac OS X doesn't set UNIX locale to match user-selected one, so ICU default doesn't work. - CFStringRef collationOrder = (CFStringRef)CFPreferencesCopyValue(CFSTR("AppleCollationOrder"), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost); +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !PLATFORM(IPHONE) + RetainPtr<CFLocaleRef> currentLocale(AdoptCF, CFLocaleCopyCurrent()); + CFStringRef collationOrder = (CFStringRef)CFLocaleGetValue(currentLocale.get(), kCFLocaleCollatorIdentifier); +#else + RetainPtr<CFStringRef> collationOrderRetainer(AdoptCF, (CFStringRef)CFPreferencesCopyValue(CFSTR("AppleCollationOrder"), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)); + CFStringRef collationOrder = collationOrderRetainer.get(); +#endif char buf[256]; if (collationOrder) { CFStringGetCString(collationOrder, buf, sizeof(buf), kCFStringEncodingASCII); - CFRelease(collationOrder); return std::auto_ptr<Collator>(new Collator(buf)); } else return std::auto_ptr<Collator>(new Collator("")); |