X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/9dae56ea45a0f5f8136a5c93d6f3a7f99399ca73..f9bf01c6616d5ddcf65b13b33cedf9e387ff7a63:/wtf/unicode/icu/CollatorICU.cpp diff --git a/wtf/unicode/icu/CollatorICU.cpp b/wtf/unicode/icu/CollatorICU.cpp index 79dec79..a1753a4 100644 --- a/wtf/unicode/icu/CollatorICU.cpp +++ b/wtf/unicode/icu/CollatorICU.cpp @@ -36,7 +36,8 @@ #include #include -#if PLATFORM(DARWIN) +#if OS(DARWIN) +#include "RetainPtr.h" #include #endif @@ -58,13 +59,18 @@ Collator::Collator(const char* locale) std::auto_ptr Collator::userDefault() { -#if PLATFORM(DARWIN) && PLATFORM(CF) +#if OS(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) && !OS(IPHONE_OS) + RetainPtr currentLocale(AdoptCF, CFLocaleCopyCurrent()); + CFStringRef collationOrder = (CFStringRef)CFLocaleGetValue(currentLocale.get(), kCFLocaleCollatorIdentifier); +#else + RetainPtr 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(new Collator(buf)); } else return std::auto_ptr(new Collator(""));