This MR attempts to bring Wine's handling of `setlocale` and `_create_locale` more in line with the behavior of native >= `msvcr110`. It does this by replacing the usage of the LCID based `GetLocaleInfo` with the sname based `GetLocaleInfoEx`. `GetLocaleInfo` doesn't support neutral locales, even on native, which causes problems with neutral Chinese locales like `zh-Hans` and `zh-Hant`.
It also improves the accuracy of the internal `__lc_locale_name_func`, as tests indicate that it returns `LOCALE_SNAME`s instead of ISO 639 language names.
Potential future improvements: * Modifying the generation of the `pclmap` and `pcumap` fields of `threadlocaleinfostruct` to work on WCHARs. * I've done some changes to `__thread_data` which make it not fully match native, I'll submit a follow up which fixes this.
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcr110/tests/msvcr110.c | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)
diff --git a/dlls/msvcr110/tests/msvcr110.c b/dlls/msvcr110/tests/msvcr110.c index 255c68b0796..9cdac982941 100644 --- a/dlls/msvcr110/tests/msvcr110.c +++ b/dlls/msvcr110/tests/msvcr110.c @@ -152,6 +152,52 @@ static void test_setlocale(void) ret = p_setlocale(LC_ALL, "en-us.1250"); ok(!ret, "setlocale(en-us.1250) succeeded (%s)\n", ret);
+ ret = p_setlocale(LC_ALL, "zh-Hans"); + todo_wine ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "zh-Hans"), "setlocale zh-Hans failed\n"); + + ret = p_setlocale(LC_ALL, "zh-Hant"); + todo_wine ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "zh-Hant"), "setlocale zh-Hant failed\n"); + + /* used to return Chinese (Simplified)_China.936 */ + ret = p_setlocale(LC_ALL, "chinese"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese failed, got %s\n", ret); + + /* used to return Chinese (Simplified)_China.936 */ + ret = p_setlocale(LC_ALL, "Chinese_China.936"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale Chinese_China.936 failed, got %s\n", ret); + + /* used to return Chinese (Simplified)_China.936 */ + ret = p_setlocale(LC_ALL, "chinese-simplified"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese-simplified failed, got %s\n", ret); + + /* used to return Chinese (Simplified)_China.936 */ + ret = p_setlocale(LC_ALL, "chs"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chs failed, got %s\n", ret); + + /* used to return Chinese (Traditional)_Taiwan.950 */ + ret = p_setlocale(LC_ALL, "cht"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale cht failed, got %s\n", ret); + + /* used to return Chinese (Traditional)_Taiwan.950 */ + ret = p_setlocale(LC_ALL, "chinese-traditional"); + ok(ret != NULL, "expected success, but got NULL\n"); + if (ret) + todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale chinese-traditional failed, got %s\n", ret); + p_setlocale(LC_ALL, "C"); }
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcr120/tests/msvcr120.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c index e5a5ff0435d..04870632853 100644 --- a/dlls/msvcr120/tests/msvcr120.c +++ b/dlls/msvcr120/tests/msvcr120.c @@ -596,6 +596,14 @@ static void test____lc_locale_name_func(void) } }
+ p_setlocale(LC_ALL, "zh-Hans"); + lc_names = p____lc_locale_name_func(); + todo_wine ok(!lstrcmpW(lc_names[1], L"zh-Hans"), "lc_names[1] expected zh-Hans got %s\n", wine_dbgstr_w(lc_names[1])); + + p_setlocale(LC_ALL, "zh-Hant"); + lc_names = p____lc_locale_name_func(); + todo_wine ok(!lstrcmpW(lc_names[1], L"zh-Hant"), "lc_names[1] expected zh-Hant got %s\n", wine_dbgstr_w(lc_names[1])); + p_setlocale(LC_ALL, "C"); lc_names = p____lc_locale_name_func(); ok(!lc_names[1], "___lc_locale_name_func()[1] = %s\n", wine_dbgstr_w(lc_names[1]));
From: Victor Chiletto vchiletto@codeweavers.com
GetLocaleInfoA doesn't return the proper sname for neutral LCIDs. --- dlls/msvcr110/tests/msvcr110.c | 8 ++-- dlls/msvcr120/tests/msvcr120.c | 7 ++- dlls/msvcrt/locale.c | 81 ++++++++++++++++++---------------- dlls/msvcrt/tests/locale.c | 4 +- 4 files changed, 54 insertions(+), 46 deletions(-)
diff --git a/dlls/msvcr110/tests/msvcr110.c b/dlls/msvcr110/tests/msvcr110.c index 9cdac982941..e87b2508943 100644 --- a/dlls/msvcr110/tests/msvcr110.c +++ b/dlls/msvcr110/tests/msvcr110.c @@ -153,14 +153,14 @@ static void test_setlocale(void) ok(!ret, "setlocale(en-us.1250) succeeded (%s)\n", ret);
ret = p_setlocale(LC_ALL, "zh-Hans"); - todo_wine ok(ret != NULL, "expected success, but got NULL\n"); + ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "zh-Hans"), "setlocale zh-Hans failed\n"); + ok(!strcmp(ret, "zh-Hans"), "setlocale zh-Hans failed\n");
ret = p_setlocale(LC_ALL, "zh-Hant"); - todo_wine ok(ret != NULL, "expected success, but got NULL\n"); + ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "zh-Hant"), "setlocale zh-Hant failed\n"); + ok(!strcmp(ret, "zh-Hant"), "setlocale zh-Hant failed\n");
/* used to return Chinese (Simplified)_China.936 */ ret = p_setlocale(LC_ALL, "chinese"); diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c index 04870632853..1508994ca79 100644 --- a/dlls/msvcr120/tests/msvcr120.c +++ b/dlls/msvcr120/tests/msvcr120.c @@ -567,7 +567,6 @@ static void test____lc_locale_name_func(void) const WCHAR broken_name[10]; } tests[] = { { "American", {'e','n',0}, {'e','n','-','U','S',0} }, - { "Belgian", {'n','l','-','B','E',0} }, { "Chinese", {'z','h',0}, {'z','h','-','C','N',0} }, { "Dutch", {'n','l',0}, {'n','l','-','N','L',0} }, { "English", {'e','n',0}, {'e','n','-','U','S',0} }, @@ -587,7 +586,7 @@ static void test____lc_locale_name_func(void)
lc_names = p____lc_locale_name_func(); ok(lc_names[0] == NULL, "%d - lc_names[0] = %s\n", i, wine_dbgstr_w(lc_names[0])); - ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)), + todo_wine ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)), "%d - lc_names[1] = %s\n", i, wine_dbgstr_w(lc_names[1]));
for(j=LC_MIN+2; j<=LC_MAX; j++) { @@ -596,6 +595,10 @@ static void test____lc_locale_name_func(void) } }
+ p_setlocale(LC_ALL, "Belgian"); + lc_names = p____lc_locale_name_func(); + ok(!lstrcmpW(lc_names[1], L"nl-BE"), "lc_names[1] expected nl-BE got %s\n", wine_dbgstr_w(lc_names[1])); + p_setlocale(LC_ALL, "zh-Hans"); lc_names = p____lc_locale_name_func(); todo_wine ok(!lstrcmpW(lc_names[1], L"zh-Hans"), "lc_names[1] expected zh-Hans got %s\n", wine_dbgstr_w(lc_names[1])); diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 16ed68cdebd..7fd14f6ee7f 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -222,64 +222,63 @@ static void remap_synonym(char *name) #define FOUND_COUNTRY 0x1
typedef struct { - char search_language[MAX_ELEM_LEN]; - char search_country[MAX_ELEM_LEN]; + WCHAR search_language[MAX_ELEM_LEN]; + WCHAR search_country[MAX_ELEM_LEN]; + WCHAR found_lang_sname[LOCALE_NAME_MAX_LENGTH]; DWORD found_codepage; unsigned int match_flags; - LANGID found_lang_id; BOOL allow_sname; } locale_search_t;
#define CONTINUE_LOOKING TRUE #define STOP_LOOKING FALSE
-/* INTERNAL: Get and compare locale info with a given string */ -static int compare_info(LCID lcid, DWORD flags, char* buff, const char* cmp, BOOL exact) +/* INTERNAL: Compare locale info with given string, using the GetLocaleEx API */ +static int compare_info(WCHAR *name, DWORD flags, WCHAR *buff, const WCHAR *cmp, BOOL exact) { int len;
- if(!cmp[0]) - return 0; + if (!cmp[0]) + return 0; + + GetLocaleInfoEx(name, flags | LOCALE_NOUSEROVERRIDE, buff, MAX_ELEM_LEN);
- buff[0] = 0; - GetLocaleInfoA(lcid, flags|LOCALE_NOUSEROVERRIDE, buff, MAX_ELEM_LEN); if (!buff[0]) return 0;
- /* Partial matches are only allowed on language/country names */ - len = strlen(cmp); - if(exact || len<=3) - return !_stricmp(cmp, buff); + len = wcslen(cmp); + + if (exact || len <= 3) + return !_wcsicmp(cmp, buff); else - return !_strnicmp(cmp, buff, len); + return !_wcsnicmp(cmp, buff, len); }
static BOOL CALLBACK find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam ) { locale_search_t *res = (locale_search_t *)lParam; - const LCID lcid = LocaleNameToLCID( name, 0 ); - char buff[MAX_ELEM_LEN]; + WCHAR buff[MAX_ELEM_LEN]; unsigned int flags = 0;
- if (lcid == LOCALE_CUSTOM_UNSPECIFIED) return CONTINUE_LOOKING; + TRACE("%s\n", wine_dbgstr_w(res->search_language));
#if _MSVCR_VER >= 110 - if (res->allow_sname && compare_info(lcid,LOCALE_SNAME,buff,res->search_language, TRUE)) + if (res->allow_sname && compare_info(name,LOCALE_SNAME,buff,res->search_language, TRUE)) { - TRACE(":Found locale: %s->%s\n", res->search_language, buff); + TRACE(":Found locale: %s->%s\n", wine_dbgstr_w(res->search_language), wine_dbgstr_w(buff)); res->match_flags = FOUND_SNAME; - res->found_lang_id = LANGIDFROMLCID(lcid); + wcscpy(res->found_lang_sname, name); return STOP_LOOKING; } #endif
/* Check Language */ - if (compare_info(lcid,LOCALE_SISO639LANGNAME,buff,res->search_language, TRUE) || - compare_info(lcid,LOCALE_SABBREVLANGNAME,buff,res->search_language, TRUE) || - compare_info(lcid,LOCALE_SENGLANGUAGE,buff,res->search_language, FALSE)) + if (compare_info(name,LOCALE_SISO639LANGNAME,buff,res->search_language, TRUE) || + compare_info(name,LOCALE_SABBREVLANGNAME,buff,res->search_language, TRUE) || + compare_info(name,LOCALE_SENGLANGUAGE,buff,res->search_language, FALSE)) { - TRACE(":Found language: %s->%s\n", res->search_language, buff); + TRACE(":Found language: %s->%s\n", wine_dbgstr_w(res->search_language), wine_dbgstr_w(buff)); flags |= FOUND_LANGUAGE; } else if (res->match_flags & FOUND_LANGUAGE) @@ -288,11 +287,11 @@ find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam ) }
/* Check Country */ - if (compare_info(lcid,LOCALE_SISO3166CTRYNAME,buff,res->search_country, TRUE) || - compare_info(lcid,LOCALE_SABBREVCTRYNAME,buff,res->search_country, TRUE) || - compare_info(lcid,LOCALE_SENGCOUNTRY,buff,res->search_country, FALSE)) + if (compare_info(name,LOCALE_SISO3166CTRYNAME,buff,res->search_country, TRUE) || + compare_info(name,LOCALE_SABBREVCTRYNAME,buff,res->search_country, TRUE) || + compare_info(name,LOCALE_SENGCOUNTRY,buff,res->search_country, FALSE)) { - TRACE("Found country:%s->%s\n", res->search_country, buff); + TRACE("Found country:%s->%s\n", wine_dbgstr_w(res->search_country), wine_dbgstr_w(buff)); flags |= FOUND_COUNTRY; } else if (!flags && (res->match_flags & FOUND_COUNTRY)) @@ -304,7 +303,7 @@ find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam ) { /* Found a better match than previously */ res->match_flags = flags; - res->found_lang_id = LANGIDFROMLCID(lcid); + wcscpy(res->found_lang_sname, name); } if ((flags & (FOUND_LANGUAGE | FOUND_COUNTRY)) == (FOUND_LANGUAGE | FOUND_COUNTRY)) @@ -339,29 +338,33 @@ LCID locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *sname) lcid = GetUserDefaultLCID(); } else { locale_search_t search; + char search_language_buf[MAX_ELEM_LEN] = { 0 }, search_country_buf[MAX_ELEM_LEN] = { 0 };
memset(&search, 0, sizeof(locale_search_t)); - lstrcpynA(search.search_language, locale, MAX_ELEM_LEN); + lstrcpynA(search_language_buf, locale, MAX_ELEM_LEN); if(region) { - lstrcpynA(search.search_country, region+1, MAX_ELEM_LEN); + lstrcpynA(search_country_buf, region+1, MAX_ELEM_LEN); if(region-locale < MAX_ELEM_LEN) - search.search_language[region-locale] = '\0'; + search_language_buf[region-locale] = '\0'; } else - search.search_country[0] = '\0'; + search_country_buf[0] = '\0';
if(cp) { if(region && cp-region-1<MAX_ELEM_LEN) - search.search_country[cp-region-1] = '\0'; + search_country_buf[cp-region-1] = '\0'; if(cp-locale < MAX_ELEM_LEN) - search.search_language[cp-locale] = '\0'; + search_language_buf[cp-locale] = '\0'; }
if(!cp && !region) { - remap_synonym(search.search_language); + remap_synonym(search_language_buf); search.allow_sname = TRUE; }
+ MultiByteToWideChar(CP_ACP, 0, search_language_buf, -1, search.search_language, MAX_ELEM_LEN); + MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN); + EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL);
if (!search.match_flags) @@ -373,7 +376,7 @@ LCID locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *sname) if (search.search_country[0] && !(search.match_flags & FOUND_COUNTRY)) return -1;
- lcid = MAKELCID(search.found_lang_id, SORT_DEFAULT); + lcid = LocaleNameToLCID(search.found_lang_sname, LOCALE_ALLOW_NEUTRAL_NAMES); is_sname = (search.match_flags & FOUND_SNAME) != 0; }
@@ -517,9 +520,11 @@ static BOOL update_threadlocinfo_category(LCID lcid, unsigned short cp, set_lc_locale_name(locinfo, category);
if(!locinfo->lc_category[category].locale) { + /* new norwegian nynorsk LCID */ + static const LCID norwegian_nynorsk_lcid = 0x7814; int len = 0;
- if (lcid == MAKELANGID( LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK )) + if (lcid == norwegian_nynorsk_lcid) { /* locale.nls contains "Norwegian Nynorsk" instead for LOCALE_SENGLANGUAGE */ strcpy( buf, "Norwegian-Nynorsk" ); diff --git a/dlls/msvcrt/tests/locale.c b/dlls/msvcrt/tests/locale.c index f77e8f93abb..56fe17f2f68 100644 --- a/dlls/msvcrt/tests/locale.c +++ b/dlls/msvcrt/tests/locale.c @@ -129,7 +129,7 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "chinese-traditional"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") + todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "chs"); @@ -142,7 +142,7 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "cht"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") + todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "Chinese_China.936");
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcrt/locale.c | 66 +++++++++++++++++++++++++------------------- dlls/msvcrt/mbcs.c | 3 +- dlls/msvcrt/msvcrt.h | 5 ++-- 3 files changed, 42 insertions(+), 32 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 7fd14f6ee7f..8a617d0212d 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -314,28 +314,27 @@ find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam ) return CONTINUE_LOOKING; }
-/* Internal: Find the LCID for a locale specification */ -LCID locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *sname) +/* Internal: Find the sname for a locale specification */ +BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_match, WCHAR *sname, int sname_size) { thread_data_t *data = msvcrt_get_thread_data(); const char *cp, *region; BOOL is_sname = FALSE; DWORD locale_cp; - LCID lcid;
if (!strcmp(locale, data->cached_locale)) { if (codepage) *codepage = data->cached_cp; if (sname) - *sname = data->cached_sname; - return data->cached_lcid; + wcsncpy(sname, data->cached_sname, sname_size); + return TRUE; }
cp = strchr(locale, '.'); region = strchr(locale, '_');
if(!locale[0] || (cp == locale && !region)) { - lcid = GetUserDefaultLCID(); + GetUserDefaultLocaleName(sname, sname_size); } else { locale_search_t search; char search_language_buf[MAX_ELEM_LEN] = { 0 }, search_country_buf[MAX_ELEM_LEN] = { 0 }; @@ -368,26 +367,26 @@ LCID locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *sname) EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL);
if (!search.match_flags) - return -1; + return FALSE;
/* If we were given something that didn't match, fail */ if (search.search_language[0] && !(search.match_flags & (FOUND_SNAME | FOUND_LANGUAGE))) - return -1; + return FALSE; if (search.search_country[0] && !(search.match_flags & FOUND_COUNTRY)) - return -1; + return FALSE;
- lcid = LocaleNameToLCID(search.found_lang_sname, LOCALE_ALLOW_NEUTRAL_NAMES); + wcsncpy(sname, search.found_lang_sname, sname_size); is_sname = (search.match_flags & FOUND_SNAME) != 0; }
/* Obtain code page */ if (!cp || !cp[1] || !_strnicmp(cp, ".ACP", 4)) { - GetLocaleInfoW(lcid, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, + GetLocaleInfoEx(sname, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&locale_cp, sizeof(DWORD)/sizeof(WCHAR)); if (!locale_cp) locale_cp = GetACP(); } else if (!_strnicmp(cp, ".OCP", 4)) { - GetLocaleInfoW(lcid, LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, + GetLocaleInfoEx(sname, LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&locale_cp, sizeof(DWORD)/sizeof(WCHAR)); #if _MSVCR_VER >= 140 } else if (!_strnicmp(cp, ".UTF-8", 6) @@ -398,24 +397,23 @@ LCID locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *sname) locale_cp = atoi(cp + 1); } if (!IsValidCodePage(locale_cp)) - return -1; + return FALSE;
if (!locale_cp) - return -1; + return FALSE;
if (codepage) *codepage = locale_cp; - if (sname) - *sname = is_sname; + if (sname_match) + *sname_match = is_sname;
if (strlen(locale) < sizeof(data->cached_locale)) { strcpy(data->cached_locale, locale); - data->cached_lcid = lcid; data->cached_cp = locale_cp; - data->cached_sname = is_sname; + wcscpy(data->cached_sname, sname); }
- return lcid; + return TRUE; }
static void copy_threadlocinfo_category(pthreadlocinfo locinfo, @@ -1256,7 +1254,7 @@ static pthreadlocinfo create_locinfo(int category, const char *locale_name[6] = { 0 }; int val, locale_len[6] = { 0 }; char buf[256]; - BOOL sname; + BOOL sname_match; #if _MSVCR_VER >= 100 wchar_t wbuf[256]; #endif @@ -1274,6 +1272,7 @@ static pthreadlocinfo create_locinfo(int category, const char *p;
while(1) { + BOOL ok = FALSE; locale += 3; /* LC_ */ if(!memcmp(locale, collate, sizeof(collate)-1)) { i = LC_COLLATE; @@ -1297,23 +1296,30 @@ static pthreadlocinfo create_locinfo(int category, if(locale[0]=='C' && (locale[1]==';' || locale[1]=='\0')) { lcid[i] = 0; cp[i] = CP_ACP; + ok = TRUE; } else if(p) { + WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; + memcpy(buf, locale, p-locale); buf[p-locale] = '\0'; - lcid[i] = locale_to_LCID(buf, &cp[i], &sname); - if(sname) { + ok = locale_to_sname(buf, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); + lcid[i] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + if(sname_match) { locale_name[i] = locale; locale_len[i] = p-locale; } } else { - lcid[i] = locale_to_LCID(locale, &cp[i], &sname); - if(sname) { + WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; + + ok = locale_to_sname(buf, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); + lcid[i] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + if(sname_match) { locale_name[i] = locale; locale_len[i] = strlen(locale); } }
- if(lcid[i] == -1) + if(!ok) return NULL;
if(!p || *(p+1)!='L' || *(p+2)!='C' || *(p+3)!='_') @@ -1322,10 +1328,14 @@ static pthreadlocinfo create_locinfo(int category, locale = p+1; } } else { - lcid[0] = locale_to_LCID(locale, &cp[0], &sname); - if(lcid[0] == -1) + WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; + BOOL ok = FALSE; + + ok = locale_to_sname(locale, &cp[0], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); + lcid[0] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + if(!ok) return NULL; - if(sname) { + if(sname_match) { locale_name[0] = locale; locale_len[0] = strlen(locale); } diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 16c5c378be7..8598bceb029 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -252,8 +252,9 @@ threadmbcinfo* create_mbcinfo(int cp, LCID lcid, threadmbcinfo *old_mbcinfo) }
if(lcid == -1) { + WCHAR wbuf[LOCALE_NAME_MAX_LENGTH]; sprintf(bufA, ".%d", newcp); - mbcinfo->mblcid = locale_to_LCID(bufA, NULL, NULL); + mbcinfo->mblcid = locale_to_sname(bufA, NULL, NULL, wbuf, LOCALE_NAME_MAX_LENGTH) ? LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES) : -1; } else { mbcinfo->mblcid = lcid; } diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 1d2db6a4d87..42c41c2200c 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -170,8 +170,7 @@ struct __thread_data { int processing_throw; frame_info *frame_info_head; void *unk8[6]; - LCID cached_lcid; - BOOL cached_sname; + WCHAR cached_sname[LOCALE_NAME_MAX_LENGTH]; int unk9[2]; DWORD cached_cp; char cached_locale[131]; @@ -186,7 +185,7 @@ typedef struct __thread_data thread_data_t;
extern thread_data_t *CDECL msvcrt_get_thread_data(void) DECLSPEC_HIDDEN;
-LCID locale_to_LCID(const char*, unsigned short*, BOOL*) DECLSPEC_HIDDEN; +BOOL locale_to_sname(const char*, unsigned short*, BOOL*, WCHAR*, int) DECLSPEC_HIDDEN; extern _locale_t MSVCRT_locale DECLSPEC_HIDDEN; extern __lc_time_data cloc_time_data DECLSPEC_HIDDEN; extern unsigned int MSVCRT___lc_codepage;
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcr110/tests/msvcr110.c | 8 +- dlls/msvcr120/tests/msvcr120.c | 11 +- dlls/msvcrt/locale.c | 413 +++++++++++++++------------------ dlls/msvcrt/tests/locale.c | 8 +- include/msvcrt/corecrt.h | 2 - 5 files changed, 194 insertions(+), 248 deletions(-)
diff --git a/dlls/msvcr110/tests/msvcr110.c b/dlls/msvcr110/tests/msvcr110.c index e87b2508943..2afdc419641 100644 --- a/dlls/msvcr110/tests/msvcr110.c +++ b/dlls/msvcr110/tests/msvcr110.c @@ -166,25 +166,25 @@ static void test_setlocale(void) ret = p_setlocale(LC_ALL, "chinese"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese failed, got %s\n", ret);
/* used to return Chinese (Simplified)_China.936 */ ret = p_setlocale(LC_ALL, "Chinese_China.936"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale Chinese_China.936 failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese_China.936"), "setlocale Chinese_China.936 failed, got %s\n", ret);
/* used to return Chinese (Simplified)_China.936 */ ret = p_setlocale(LC_ALL, "chinese-simplified"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese-simplified failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese_China.936"), "setlocale chinese-simplified failed, got %s\n", ret);
/* used to return Chinese (Simplified)_China.936 */ ret = p_setlocale(LC_ALL, "chs"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese_China.936"), "setlocale chs failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese_China.936"), "setlocale chs failed, got %s\n", ret);
/* used to return Chinese (Traditional)_Taiwan.950 */ ret = p_setlocale(LC_ALL, "cht"); diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c index 1508994ca79..838338c83f8 100644 --- a/dlls/msvcr120/tests/msvcr120.c +++ b/dlls/msvcr120/tests/msvcr120.c @@ -567,6 +567,7 @@ static void test____lc_locale_name_func(void) const WCHAR broken_name[10]; } tests[] = { { "American", {'e','n',0}, {'e','n','-','U','S',0} }, + { "Belgian", {'n','l','-','B','E',0} }, { "Chinese", {'z','h',0}, {'z','h','-','C','N',0} }, { "Dutch", {'n','l',0}, {'n','l','-','N','L',0} }, { "English", {'e','n',0}, {'e','n','-','U','S',0} }, @@ -586,7 +587,7 @@ static void test____lc_locale_name_func(void)
lc_names = p____lc_locale_name_func(); ok(lc_names[0] == NULL, "%d - lc_names[0] = %s\n", i, wine_dbgstr_w(lc_names[0])); - todo_wine ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)), + ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)), "%d - lc_names[1] = %s\n", i, wine_dbgstr_w(lc_names[1]));
for(j=LC_MIN+2; j<=LC_MAX; j++) { @@ -595,17 +596,13 @@ static void test____lc_locale_name_func(void) } }
- p_setlocale(LC_ALL, "Belgian"); - lc_names = p____lc_locale_name_func(); - ok(!lstrcmpW(lc_names[1], L"nl-BE"), "lc_names[1] expected nl-BE got %s\n", wine_dbgstr_w(lc_names[1])); - p_setlocale(LC_ALL, "zh-Hans"); lc_names = p____lc_locale_name_func(); - todo_wine ok(!lstrcmpW(lc_names[1], L"zh-Hans"), "lc_names[1] expected zh-Hans got %s\n", wine_dbgstr_w(lc_names[1])); + ok(!lstrcmpW(lc_names[1], L"zh-Hans"), "lc_names[1] expected zh-Hans got %s\n", wine_dbgstr_w(lc_names[1]));
p_setlocale(LC_ALL, "zh-Hant"); lc_names = p____lc_locale_name_func(); - todo_wine ok(!lstrcmpW(lc_names[1], L"zh-Hant"), "lc_names[1] expected zh-Hant got %s\n", wine_dbgstr_w(lc_names[1])); + ok(!lstrcmpW(lc_names[1], L"zh-Hant"), "lc_names[1] expected zh-Hant got %s\n", wine_dbgstr_w(lc_names[1]));
p_setlocale(LC_ALL, "C"); lc_names = p____lc_locale_name_func(); diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 8a617d0212d..6527e06eacd 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -24,8 +24,10 @@ #include <stdio.h> #include <stdlib.h> #include <mbctype.h> +#include <wchar.h> #include <wctype.h>
+#include "string.h" #include "windef.h" #include "winbase.h" #include "winuser.h" @@ -426,12 +428,11 @@ static void copy_threadlocinfo_category(pthreadlocinfo locinfo, locinfo->lc_category[category].refcount = old_locinfo->lc_category[category].refcount; InterlockedIncrement((LONG *)locinfo->lc_category[category].refcount); } -#if _MSVCR_VER >= 110 + locinfo->lc_name[category] = old_locinfo->lc_name[category]; locinfo->lc_category[category].wrefcount = old_locinfo->lc_category[category].wrefcount; if(locinfo->lc_category[category].wrefcount) InterlockedIncrement((LONG *)locinfo->lc_category[category].wrefcount); -#endif }
static BOOL init_category_name(const char *name, int len, @@ -454,46 +455,30 @@ static BOOL init_category_name(const char *name, int len, return TRUE; }
-#if _MSVCR_VER >= 110 -static inline BOOL set_lc_locale_name(pthreadlocinfo locinfo, int cat) +static inline BOOL set_lc_locale_name(pthreadlocinfo locinfo, int cat, WCHAR *sname) { - LCID lcid = locinfo->lc_handle[cat]; - WCHAR buf[100]; - int len; + int len = wcslen(sname);
locinfo->lc_category[cat].wrefcount = malloc(sizeof(int)); if(!locinfo->lc_category[cat].wrefcount) return FALSE; *locinfo->lc_category[cat].wrefcount = 1;
- len = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME - |LOCALE_NOUSEROVERRIDE, buf, 100); - if(!len) return FALSE; - - if(LocaleNameToLCID(buf, 0) != lcid) - len = LCIDToLocaleName(lcid, buf, 100, 0); - if(!len || !(locinfo->lc_name[cat] = malloc(len*sizeof(wchar_t)))) return FALSE;
- memcpy(locinfo->lc_name[cat], buf, len*sizeof(wchar_t)); - return TRUE; -} -#else -static inline BOOL set_lc_locale_name(pthreadlocinfo locinfo, int cat) -{ + wcscpy(locinfo->lc_name[cat], sname); return TRUE; } -#endif
/* INTERNAL: Set lc_handle, lc_id and lc_category in threadlocinfo struct */ -static BOOL update_threadlocinfo_category(LCID lcid, unsigned short cp, +static BOOL update_threadlocinfo_category(WCHAR *sname, unsigned short cp, pthreadlocinfo locinfo, int category) { - char buf[256], *p; + WCHAR wbuf[256], *p;
- if(GetLocaleInfoA(lcid, LOCALE_ILANGUAGE|LOCALE_NOUSEROVERRIDE, buf, 256)) { - p = buf; + if(GetLocaleInfoEx(sname, LOCALE_ILANGUAGE|LOCALE_NOUSEROVERRIDE, wbuf, 256)) { + p = wbuf;
locinfo->lc_id[category].wLanguage = 0; while(*p) { @@ -513,28 +498,29 @@ static BOOL update_threadlocinfo_category(LCID lcid, unsigned short cp,
locinfo->lc_id[category].wCodePage = cp;
- locinfo->lc_handle[category] = lcid; + locinfo->lc_handle[category] = LocaleNameToLCID(sname, LOCALE_ALLOW_NEUTRAL_NAMES);
- set_lc_locale_name(locinfo, category); + set_lc_locale_name(locinfo, category, sname);
if(!locinfo->lc_category[category].locale) { - /* new norwegian nynorsk LCID */ - static const LCID norwegian_nynorsk_lcid = 0x7814; + char buf[256]; int len = 0;
- if (lcid == norwegian_nynorsk_lcid) + if (!wcscmp(sname, L"nn")) { /* locale.nls contains "Norwegian Nynorsk" instead for LOCALE_SENGLANGUAGE */ - strcpy( buf, "Norwegian-Nynorsk" ); - len = strlen( buf ) + 1; + wcscpy( wbuf, L"Norwegian-Nynorsk" ); + len = wcslen( wbuf ) + 1; } - else len += GetLocaleInfoA(lcid, LOCALE_SENGLANGUAGE|LOCALE_NOUSEROVERRIDE, buf, 256); - buf[len-1] = '_'; - len += GetLocaleInfoA(lcid, LOCALE_SENGCOUNTRY - |LOCALE_NOUSEROVERRIDE, &buf[len], 256-len); - buf[len-1] = '.'; - sprintf(buf+len, "%d", cp); - len += strlen(buf+len); + else len += GetLocaleInfoEx(sname, LOCALE_SENGLANGUAGE|LOCALE_NOUSEROVERRIDE, wbuf, 256); + wbuf[len-1] = '_'; + len += GetLocaleInfoEx(sname, LOCALE_SENGCOUNTRY + |LOCALE_NOUSEROVERRIDE, &wbuf[len], 256-len); + wbuf[len-1] = '.'; + swprintf(wbuf+len, 256 - len,L"%d", cp); + len += wcslen(wbuf+len); + + WideCharToMultiByte(CP_ACP, 0, wbuf, -1, buf, 256, NULL, NULL);
return init_category_name(buf, len, locinfo, category); } @@ -1164,13 +1150,14 @@ void CDECL _free_locale(_locale_t locale) }
static inline BOOL category_needs_update(int cat, - const threadlocinfo *locinfo, LCID lcid, unsigned short cp) + const threadlocinfo *locinfo, WCHAR *sname, unsigned short cp) { if(!locinfo) return TRUE; - return lcid!=locinfo->lc_handle[cat] || cp!=locinfo->lc_id[cat].wCodePage; + if(!locinfo->lc_name[cat] || !sname) return TRUE; + return wcscmp(sname, locinfo->lc_name[cat]) != 0 || cp!=locinfo->lc_id[cat].wCodePage; }
-static __lc_time_data* create_time_data(LCID lcid) +static __lc_time_data* create_time_data(WCHAR *sname) { static const DWORD time_data[] = { LOCALE_SABBREVDAYNAME7, LOCALE_SABBREVDAYNAME1, LOCALE_SABBREVDAYNAME2, @@ -1192,6 +1179,7 @@ static __lc_time_data* create_time_data(LCID lcid)
__lc_time_data *cur; int i, ret, size; + LCID lcid = LocaleNameToLCID(sname, LOCALE_ALLOW_NEUTRAL_NAMES);
size = sizeof(__lc_time_data); for(i=0; i<ARRAY_SIZE(time_data); i++) { @@ -1201,14 +1189,14 @@ static __lc_time_data* create_time_data(LCID lcid) size += ret;
#if _MSVCR_VER == 0 || _MSVCR_VER >= 100 - ret = GetLocaleInfoW(lcid, time_data[i], NULL, 0); + ret = GetLocaleInfoEx(sname, time_data[i], NULL, 0); if(!ret) return NULL; size += ret*sizeof(wchar_t); #endif } #if _MSVCR_VER >= 110 - size += LCIDToLocaleName(lcid, NULL, 0, 0)*sizeof(wchar_t); + size += wcslen(sname)*sizeof(wchar_t); #endif
cur = malloc(size); @@ -1223,13 +1211,13 @@ static __lc_time_data* create_time_data(LCID lcid) #if _MSVCR_VER == 0 || _MSVCR_VER >= 100 for(i=0; i<ARRAY_SIZE(time_data); i++) { cur->wstr.wstr[i] = (wchar_t*)&cur->data[ret]; - ret += GetLocaleInfoW(lcid, time_data[i], + ret += GetLocaleInfoEx(sname, time_data[i], (wchar_t*)&cur->data[ret], size-ret)*sizeof(wchar_t); } #endif #if _MSVCR_VER >= 110 cur->locname = (wchar_t*)&cur->data[ret]; - LCIDToLocaleName(lcid, (wchar_t*)&cur->data[ret], (size-ret)/sizeof(wchar_t), 0); + wcsncpy((wchar_t *) &cur->data[ret], sname, size-ret); #else cur->lcid = lcid; #endif @@ -1248,25 +1236,23 @@ static pthreadlocinfo create_locinfo(int category, static const char numeric[] = "NUMERIC="; static const char time[] = "TIME=";
- pthreadlocinfo locinfo; - LCID lcid[6] = { 0 }; + pthreadlocinfo locinfo = NULL; unsigned short cp[6] = { 0 }; const char *locale_name[6] = { 0 }; + WCHAR *locale_sname[6] = { 0 }; int val, locale_len[6] = { 0 }; char buf[256]; BOOL sname_match; -#if _MSVCR_VER >= 100 wchar_t wbuf[256]; -#endif int i;
TRACE("(%d %s)\n", category, locale);
if(category<LC_MIN || category>LC_MAX || !locale) - return NULL; + goto fail;
if(locale[0]=='C' && !locale[1]) { - lcid[0] = 0; + locale_sname[0] = NULL; cp[0] = CP_ACP; } else if (locale[0] == 'L' && locale[1] == 'C' && locale[2] == '_') { const char *p; @@ -1290,29 +1276,25 @@ static pthreadlocinfo create_locinfo(int category, i = LC_TIME; locale += sizeof(time)-1; } else - return NULL; + goto fail;
p = strchr(locale, ';'); if(locale[0]=='C' && (locale[1]==';' || locale[1]=='\0')) { - lcid[i] = 0; + locale_sname[i] = NULL; cp[i] = CP_ACP; ok = TRUE; } else if(p) { - WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; - memcpy(buf, locale, p-locale); buf[p-locale] = '\0'; ok = locale_to_sname(buf, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); - lcid[i] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + locale_sname[i] = wcsdup(wbuf); if(sname_match) { locale_name[i] = locale; locale_len[i] = p-locale; } } else { - WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; - ok = locale_to_sname(buf, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); - lcid[i] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + locale_sname[i] = wcsdup(wbuf); if(sname_match) { locale_name[i] = locale; locale_len[i] = strlen(locale); @@ -1320,7 +1302,7 @@ static pthreadlocinfo create_locinfo(int category, }
if(!ok) - return NULL; + goto fail;
if(!p || *(p+1)!='L' || *(p+2)!='C' || *(p+3)!='_') break; @@ -1328,20 +1310,19 @@ static pthreadlocinfo create_locinfo(int category, locale = p+1; } } else { - WCHAR wbuf[LOCALE_NAME_MAX_LENGTH] = { 0 }; BOOL ok = FALSE;
ok = locale_to_sname(locale, &cp[0], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); - lcid[0] = LocaleNameToLCID(wbuf, LOCALE_ALLOW_NEUTRAL_NAMES); + locale_sname[0] = wcsdup(wbuf); if(!ok) - return NULL; + goto fail; if(sname_match) { locale_name[0] = locale; locale_len[0] = strlen(locale); }
for(i=1; i<6; i++) { - lcid[i] = lcid[0]; + locale_sname[i] = wcsdup(locale_sname[0]); cp[i] = cp[0]; locale_name[i] = locale_name[0]; locale_len[i] = locale_len[0]; @@ -1353,16 +1334,16 @@ static pthreadlocinfo create_locinfo(int category, if(i==LC_CTYPE && cp[i]==CP_UTF8) { locale_name[i] = NULL; locale_len[i] = 0; - lcid[i] = old_locinfo ? old_locinfo->lc_handle[i] : 0; + locale_sname[i] = old_locinfo ? wcsdup(old_locinfo->lc_name[i]) : NULL; cp[i] = old_locinfo ? old_locinfo->lc_id[i].wCodePage : 0; } #endif if(category!=LC_ALL && category!=i) { if(old_locinfo) { - lcid[i] = old_locinfo->lc_handle[i]; + locale_sname[i] = old_locinfo ? wcsdup(old_locinfo->lc_name[i]) : NULL; cp[i] = old_locinfo->lc_id[i].wCodePage; } else { - lcid[i] = 0; + locale_sname[i] = NULL; cp[i] = 0; } } @@ -1370,7 +1351,7 @@ static pthreadlocinfo create_locinfo(int category,
locinfo = malloc(sizeof(threadlocinfo)); if(!locinfo) - return NULL; + goto fail;
memset(locinfo, 0, sizeof(threadlocinfo)); locinfo->refcount = 1; @@ -1378,38 +1359,34 @@ static pthreadlocinfo create_locinfo(int category, if(locale_name[LC_COLLATE] && !init_category_name(locale_name[LC_COLLATE], locale_len[LC_COLLATE], locinfo, LC_COLLATE)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
if(!category_needs_update(LC_COLLATE, old_locinfo, - lcid[LC_COLLATE], cp[LC_COLLATE])) { + locale_sname[LC_COLLATE], cp[LC_COLLATE])) { copy_threadlocinfo_category(locinfo, old_locinfo, LC_COLLATE); locinfo->lc_collate_cp = old_locinfo->lc_collate_cp; - } else if(lcid[LC_COLLATE]) { - if(!update_threadlocinfo_category(lcid[LC_COLLATE], + } else if(locale_sname[LC_COLLATE]) { + if(!update_threadlocinfo_category(locale_sname[LC_COLLATE], cp[LC_COLLATE], locinfo, LC_COLLATE)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
locinfo->lc_collate_cp = locinfo->lc_id[LC_COLLATE].wCodePage; } else { if(!init_category_name("C", 1, locinfo, LC_COLLATE)) { - free_locinfo(locinfo); - return NULL; + goto fail; } }
if(locale_name[LC_CTYPE] && !init_category_name(locale_name[LC_CTYPE], locale_len[LC_CTYPE], locinfo, LC_CTYPE)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
if(!category_needs_update(LC_CTYPE, old_locinfo, - lcid[LC_CTYPE], cp[LC_CTYPE])) { + locale_sname[LC_CTYPE], cp[LC_CTYPE])) { copy_threadlocinfo_category(locinfo, old_locinfo, LC_CTYPE); locinfo->lc_codepage = old_locinfo->lc_codepage; locinfo->lc_clike = old_locinfo->lc_clike; @@ -1421,28 +1398,25 @@ static pthreadlocinfo create_locinfo(int category, locinfo->pcumap = old_locinfo->pcumap; if(locinfo->ctype1_refcount) InterlockedIncrement((LONG *)locinfo->ctype1_refcount); - } else if(lcid[LC_CTYPE]) { + } else if(locale_sname[LC_CTYPE]) { CPINFO cp_info; int j;
- if(!update_threadlocinfo_category(lcid[LC_CTYPE], + if(!update_threadlocinfo_category(locale_sname[LC_CTYPE], cp[LC_CTYPE], locinfo, LC_CTYPE)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
locinfo->lc_codepage = locinfo->lc_id[LC_CTYPE].wCodePage; locinfo->lc_clike = 1; if(!GetCPInfo(locinfo->lc_codepage, &cp_info)) { - free_locinfo(locinfo); - return NULL; + goto fail; } locinfo->mb_cur_max = cp_info.MaxCharSize;
locinfo->ctype1_refcount = malloc(sizeof(int)); if(!locinfo->ctype1_refcount) { - free_locinfo(locinfo); - return NULL; + goto fail; } *locinfo->ctype1_refcount = 1;
@@ -1450,8 +1424,7 @@ static pthreadlocinfo create_locinfo(int category, locinfo->pclmap = malloc(sizeof(char[256])); locinfo->pcumap = malloc(sizeof(char[256])); if(!locinfo->ctype1 || !locinfo->pclmap || !locinfo->pcumap) { - free_locinfo(locinfo); - return NULL; + goto fail; }
locinfo->ctype1[0] = 0; @@ -1464,7 +1437,7 @@ static pthreadlocinfo create_locinfo(int category, /* builtin GetStringTypeA doesn't set output to 0 on invalid input */ locinfo->ctype1[i] = 0;
- GetStringTypeA(lcid[LC_CTYPE], CT_CTYPE1, buf, + GetStringTypeA(locinfo->lc_handle[LC_CTYPE], CT_CTYPE1, buf, 1, locinfo->ctype1+i); }
@@ -1479,9 +1452,9 @@ static pthreadlocinfo create_locinfo(int category, buf[i] = i; }
- LCMapStringA(lcid[LC_CTYPE], LCMAP_LOWERCASE, buf, 256, + LCMapStringA(locinfo->lc_handle[LC_CTYPE], LCMAP_LOWERCASE, buf, 256, (char*)locinfo->pclmap, 256); - LCMapStringA(lcid[LC_CTYPE], LCMAP_UPPERCASE, buf, 256, + LCMapStringA(locinfo->lc_handle[LC_CTYPE], LCMAP_UPPERCASE, buf, 256, (char*)locinfo->pcumap, 256); } else { locinfo->lc_clike = 1; @@ -1490,20 +1463,19 @@ static pthreadlocinfo create_locinfo(int category, locinfo->pclmap = cloc_clmap; locinfo->pcumap = cloc_cumap; if(!init_category_name("C", 1, locinfo, LC_CTYPE)) { - free_locinfo(locinfo); - return NULL; + goto fail; } }
if(!category_needs_update(LC_MONETARY, old_locinfo, - lcid[LC_MONETARY], cp[LC_MONETARY]) && + locale_sname[LC_MONETARY], cp[LC_MONETARY]) && !category_needs_update(LC_NUMERIC, old_locinfo, - lcid[LC_NUMERIC], cp[LC_NUMERIC])) { + locale_sname[LC_NUMERIC], cp[LC_NUMERIC])) { locinfo->lconv = old_locinfo->lconv; locinfo->lconv_intl_refcount = old_locinfo->lconv_intl_refcount; if(locinfo->lconv_intl_refcount) InterlockedIncrement((LONG *)locinfo->lconv_intl_refcount); - } else if(lcid[LC_MONETARY] || lcid[LC_NUMERIC]) { + } else if(locale_sname[LC_MONETARY] || locale_sname[LC_NUMERIC]) { locinfo->lconv = malloc(sizeof(struct lconv)); locinfo->lconv_intl_refcount = malloc(sizeof(int)); if(!locinfo->lconv || !locinfo->lconv_intl_refcount) { @@ -1511,8 +1483,7 @@ static pthreadlocinfo create_locinfo(int category, free(locinfo->lconv_intl_refcount); locinfo->lconv = NULL; locinfo->lconv_intl_refcount = NULL; - free_locinfo(locinfo); - return NULL; + goto fail; } memset(locinfo->lconv, 0, sizeof(struct lconv)); *locinfo->lconv_intl_refcount = 1; @@ -1523,12 +1494,11 @@ static pthreadlocinfo create_locinfo(int category, if(locale_name[LC_MONETARY] && !init_category_name(locale_name[LC_MONETARY], locale_len[LC_MONETARY], locinfo, LC_MONETARY)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
if(!category_needs_update(LC_MONETARY, old_locinfo, - lcid[LC_MONETARY], cp[LC_MONETARY])) { + locale_sname[LC_MONETARY], cp[LC_MONETARY])) { copy_threadlocinfo_category(locinfo, old_locinfo, LC_MONETARY); locinfo->lconv_mon_refcount = old_locinfo->lconv_mon_refcount; if(locinfo->lconv_mon_refcount) @@ -1558,59 +1528,58 @@ static pthreadlocinfo create_locinfo(int category, locinfo->lconv->_W_negative_sign = old_locinfo->lconv->_W_negative_sign; #endif } - } else if(lcid[LC_MONETARY]) { - if(!update_threadlocinfo_category(lcid[LC_MONETARY], + } else if(locale_sname[LC_MONETARY]) { + if(!update_threadlocinfo_category(locale_sname[LC_MONETARY], cp[LC_MONETARY], locinfo, LC_MONETARY)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
locinfo->lconv_mon_refcount = malloc(sizeof(int)); if(!locinfo->lconv_mon_refcount) { - free_locinfo(locinfo); - return NULL; + goto fail; }
*locinfo->lconv_mon_refcount = 1;
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SINTLSYMBOL - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SINTLSYMBOL + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->int_curr_symbol = malloc(i))) - memcpy(locinfo->lconv->int_curr_symbol, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->int_curr_symbol, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SCURRENCY - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SCURRENCY + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->currency_symbol = malloc(i))) - memcpy(locinfo->lconv->currency_symbol, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->currency_symbol, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SMONDECIMALSEP - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SMONDECIMALSEP + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->mon_decimal_point = malloc(i))) - memcpy(locinfo->lconv->mon_decimal_point, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->mon_decimal_point, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SMONTHOUSANDSEP - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SMONTHOUSANDSEP + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->mon_thousands_sep = malloc(i))) - memcpy(locinfo->lconv->mon_thousands_sep, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->mon_thousands_sep, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SMONGROUPING - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SMONGROUPING + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + WideCharToMultiByte(CP_ACP, 0, wbuf, -1, buf, 256, NULL, NULL); if(i>1) i = i/2 + (buf[i-2]=='0'?0:1); if(i && (locinfo->lconv->mon_grouping = malloc(i))) { @@ -1620,145 +1589,130 @@ static pthreadlocinfo create_locinfo(int category, if(buf[i] != '0') locinfo->lconv->mon_grouping[i/2+1] = 127; } else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SPOSITIVESIGN - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SPOSITIVESIGN + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->positive_sign = malloc(i))) - memcpy(locinfo->lconv->positive_sign, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->positive_sign, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_MONETARY], LOCALE_SNEGATIVESIGN - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SNEGATIVESIGN + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->negative_sign = malloc(i))) - memcpy(locinfo->lconv->negative_sign, buf, i); + WideCharToMultiByte(cp[LC_MONETARY], 0, wbuf, -1, locinfo->lconv->negative_sign, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_IINTLCURRDIGITS + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_IINTLCURRDIGITS |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->int_frac_digits = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_ICURRDIGITS + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_ICURRDIGITS |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->frac_digits = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_IPOSSYMPRECEDES + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_IPOSSYMPRECEDES |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->p_cs_precedes = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_IPOSSEPBYSPACE + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_IPOSSEPBYSPACE |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->p_sep_by_space = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_INEGSYMPRECEDES + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_INEGSYMPRECEDES |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->n_cs_precedes = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_INEGSEPBYSPACE + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_INEGSEPBYSPACE |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->n_sep_by_space = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_IPOSSIGNPOSN + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_IPOSSIGNPOSN |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->p_sign_posn = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- if(GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_INEGSIGNPOSN + if(GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_INEGSIGNPOSN |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) locinfo->lconv->n_sign_posn = val; else { - free_locinfo(locinfo); - return NULL; + goto fail; }
#if _MSVCR_VER >= 100 - i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SINTLSYMBOL + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SINTLSYMBOL |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_int_curr_symbol = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_int_curr_symbol, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SCURRENCY + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SCURRENCY |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_currency_symbol = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_currency_symbol, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SMONDECIMALSEP + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SMONDECIMALSEP |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_mon_decimal_point = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_mon_decimal_point, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SMONTHOUSANDSEP + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SMONTHOUSANDSEP |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_mon_thousands_sep = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_mon_thousands_sep, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SPOSITIVESIGN + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SPOSITIVESIGN |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_positive_sign = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_positive_sign, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_MONETARY], LOCALE_SNEGATIVESIGN + i = GetLocaleInfoEx(locale_sname[LC_MONETARY], LOCALE_SNEGATIVESIGN |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_negative_sign = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_negative_sign, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; } #endif } else { @@ -1790,20 +1744,18 @@ static pthreadlocinfo create_locinfo(int category, }
if(!init_category_name("C", 1, locinfo, LC_MONETARY)) { - free_locinfo(locinfo); - return NULL; + goto fail; } }
if(locale_name[LC_NUMERIC] && !init_category_name(locale_name[LC_NUMERIC], locale_len[LC_NUMERIC], locinfo, LC_NUMERIC)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
if(!category_needs_update(LC_NUMERIC, old_locinfo, - lcid[LC_NUMERIC], cp[LC_NUMERIC])) { + locale_sname[LC_NUMERIC], cp[LC_NUMERIC])) { copy_threadlocinfo_category(locinfo, old_locinfo, LC_NUMERIC); locinfo->lconv_num_refcount = old_locinfo->lconv_num_refcount; if(locinfo->lconv_num_refcount) @@ -1817,41 +1769,40 @@ static pthreadlocinfo create_locinfo(int category, locinfo->lconv->_W_thousands_sep = old_locinfo->lconv->_W_thousands_sep; #endif } - } else if(lcid[LC_NUMERIC]) { - if(!update_threadlocinfo_category(lcid[LC_NUMERIC], + } else if(locale_sname[LC_NUMERIC]) { + if(!update_threadlocinfo_category(locale_sname[LC_NUMERIC], cp[LC_NUMERIC], locinfo, LC_NUMERIC)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
locinfo->lconv_num_refcount = malloc(sizeof(int)); if(!locinfo->lconv_num_refcount) { - free_locinfo(locinfo); - return NULL; + goto fail; }
*locinfo->lconv_num_refcount = 1;
- i = GetLocaleInfoA(lcid[LC_NUMERIC], LOCALE_SDECIMAL - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_NUMERIC], LOCALE_SDECIMAL + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_NUMERIC], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->decimal_point = malloc(i))) - memcpy(locinfo->lconv->decimal_point, buf, i); + WideCharToMultiByte(cp[LC_NUMERIC], 0, wbuf, -1, locinfo->lconv->decimal_point, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_NUMERIC], LOCALE_STHOUSAND - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_NUMERIC], LOCALE_STHOUSAND + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + i = WideCharToMultiByte(cp[LC_NUMERIC], 0, wbuf, -1, NULL, 0, NULL, NULL); if(i && (locinfo->lconv->thousands_sep = malloc(i))) - memcpy(locinfo->lconv->thousands_sep, buf, i); + WideCharToMultiByte(cp[LC_NUMERIC], 0, wbuf, -1, locinfo->lconv->thousands_sep, i, NULL, NULL); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoA(lcid[LC_NUMERIC], LOCALE_SGROUPING - |LOCALE_NOUSEROVERRIDE, buf, 256); + i = GetLocaleInfoEx(locale_sname[LC_NUMERIC], LOCALE_SGROUPING + |LOCALE_NOUSEROVERRIDE, wbuf, 256); + WideCharToMultiByte(cp[LC_NUMERIC], 0, wbuf, -1, buf, 256, NULL, NULL); if(i>1) i = i/2 + (buf[i-2]=='0'?0:1); if(i && (locinfo->lconv->grouping = malloc(i))) { @@ -1861,27 +1812,24 @@ static pthreadlocinfo create_locinfo(int category, if(buf[i] != '0') locinfo->lconv->grouping[i/2+1] = 127; } else { - free_locinfo(locinfo); - return NULL; + goto fail; }
#if _MSVCR_VER >= 100 - i = GetLocaleInfoW(lcid[LC_NUMERIC], LOCALE_SDECIMAL + i = GetLocaleInfoEx(locale_sname[LC_NUMERIC], LOCALE_SDECIMAL |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_decimal_point = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_decimal_point, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; }
- i = GetLocaleInfoW(lcid[LC_NUMERIC], LOCALE_STHOUSAND + i = GetLocaleInfoEx(locale_sname[LC_NUMERIC], LOCALE_STHOUSAND |LOCALE_NOUSEROVERRIDE, wbuf, 256); if(i && (locinfo->lconv->_W_thousands_sep = malloc(i * sizeof(wchar_t)))) memcpy(locinfo->lconv->_W_thousands_sep, wbuf, i * sizeof(wchar_t)); else { - free_locinfo(locinfo); - return NULL; + goto fail; } #endif } else { @@ -1897,45 +1845,48 @@ static pthreadlocinfo create_locinfo(int category, }
if (!init_category_name("C", 1, locinfo, LC_NUMERIC)) { - free_locinfo(locinfo); - return NULL; + goto fail; } }
if(locale_name[LC_TIME] && !init_category_name(locale_name[LC_TIME], locale_len[LC_TIME], locinfo, LC_TIME)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
if(!category_needs_update(LC_TIME, old_locinfo, - lcid[LC_TIME], cp[LC_TIME])) { + locale_sname[LC_TIME], cp[LC_TIME])) { copy_threadlocinfo_category(locinfo, old_locinfo, LC_TIME); locinfo->lc_time_curr = old_locinfo->lc_time_curr; InterlockedIncrement(&locinfo->lc_time_curr->refcount); - } else if(lcid[LC_TIME]) { - if(!update_threadlocinfo_category(lcid[LC_TIME], + } else if(locale_sname[LC_TIME]) { + if(!update_threadlocinfo_category(locale_sname[LC_TIME], cp[LC_TIME], locinfo, LC_TIME)) { - free_locinfo(locinfo); - return NULL; + goto fail; }
- locinfo->lc_time_curr = create_time_data(lcid[LC_TIME]); + locinfo->lc_time_curr = create_time_data(locale_sname[LC_TIME]); if(!locinfo->lc_time_curr) { - free_locinfo(locinfo); - return NULL; + goto fail; } } else { if(!init_category_name("C", 1, locinfo, LC_TIME)) { - free_locinfo(locinfo); - return NULL; + goto fail; } locinfo->lc_time_curr = &cloc_time_data; InterlockedIncrement(&locinfo->lc_time_curr->refcount); }
return locinfo; + +fail: + free_locinfo(locinfo); + + for (i = 0; i < LC_MAX; i++) + free(locale_sname[i]); + + return NULL; }
/********************************************************************* diff --git a/dlls/msvcrt/tests/locale.c b/dlls/msvcrt/tests/locale.c index 56fe17f2f68..95c468bc140 100644 --- a/dlls/msvcrt/tests/locale.c +++ b/dlls/msvcrt/tests/locale.c @@ -114,14 +114,14 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "chinese"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "chinese-simplified"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_People's Republic of China.936")) || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret); @@ -135,7 +135,7 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "chs"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_People's Republic of China.936")), "ret = %s\n", ret);
@@ -150,7 +150,7 @@ static void test_setlocale(void) if(ret) { trace("Chinese_China.936=%s\n", ret); - ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") /* Vista - Win7 */ + todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") /* Vista - Win7 */ || !strcmp(ret, "Chinese (Simplified)_China.936") /* Win8 - Win10 */ || broken(!strcmp(ret, "Chinese_People's Republic of China.936")), "ret = %s\n", ret); } diff --git a/include/msvcrt/corecrt.h b/include/msvcrt/corecrt.h index 9ad707824ff..6b2d86b9acf 100644 --- a/include/msvcrt/corecrt.h +++ b/include/msvcrt/corecrt.h @@ -316,9 +316,7 @@ typedef struct threadlocaleinfostruct { const unsigned char *pclmap; const unsigned char *pcumap; struct __lc_time_data *lc_time_curr; -#if _MSVCR_VER >= 110 wchar_t *lc_name[6]; -#endif } threadlocinfo; #define _THREADLOCALEINFO #endif
From: Victor Chiletto vchiletto@codeweavers.com
Gives us more control over what we map to which is required due to changes in Chinese locales. --- dlls/msvcrt/locale.c | 99 ++++++++++++++++++++++---------------- dlls/msvcrt/tests/locale.c | 12 ++--- 2 files changed, 64 insertions(+), 47 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 6527e06eacd..a2291c60eeb 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -168,43 +168,53 @@ static struct lconv cloc_lconv = /* Friendly country strings & language names abbreviations. */ static const char * const _country_synonyms[] = { - "american", "enu", - "american english", "enu", - "american-english", "enu", - "english-american", "enu", - "english-us", "enu", - "english-usa", "enu", - "us", "enu", - "usa", "enu", - "australian", "ena", - "english-aus", "ena", - "belgian", "nlb", - "french-belgian", "frb", - "canadian", "enc", - "english-can", "enc", - "french-canadian", "frc", - "chinese", "chs", - "chinese-simplified", "chs", - "chinese-traditional", "cht", - "dutch-belgian", "nlb", - "english-nz", "enz", - "uk", "eng", - "english-uk", "eng", - "french-swiss", "frs", - "swiss", "des", - "german-swiss", "des", - "italian-swiss", "its", - "german-austrian", "dea", - "portuguese", "ptb", - "portuguese-brazil", "ptb", - "spanish-mexican", "esm", - "norwegian-bokmal", "nor", - "norwegian-nynorsk", "non", - "spanish-modern", "esn" + "american", "en", + "american english", "en-US", + "american-english", "en-US", + "english-american", "en-US", + "english-us", "en-US", + "english-usa", "en-US", + "us", "en-US", + "usa", "en-US", + "australian", "en-AU", + "english-aus", "en-AU", + "belgian", "nl-BE", + "french-belgian", "fr-BE", + "canadian", "en-CA", + "english-can", "en-CA", + "french-canadian", "fr-CA", +#if _MSVCR_VER >= 110 + "chinese", "zh", + "chinese-simplified", "zh", + "chinese-traditional", "zh-HK", + "chs", "zh", + "cht", "zh-HK", +#else + "chinese", "zh-CN", + "chinese-simplified", "zh-CN", + "chinese-traditional", "zh-TW", + "chs", "zh-CN", + "cht", "zh-TW", +#endif + "dutch-belgian", "nl-BE", + "english-nz", "en-NZ", + "uk", "en-GB", + "english-uk", "en-GB", + "french-swiss", "fr-CH", + "swiss", "de-CH", + "german-swiss", "de-CH", + "italian-swiss", "it-CH", + "german-austrian", "de-AT", + "portuguese", "pt-BR", + "portuguese-brazil", "pt-BR", + "spanish-mexican", "es-MX", + "norwegian-bokmal", "nb", + "norwegian-nynorsk", "nn", + "spanish-modern", "es-ES" };
/* INTERNAL: Map a synonym to an ISO code */ -static void remap_synonym(char *name) +static BOOL remap_synonym(char *name) { unsigned int i; for (i = 0; i < ARRAY_SIZE(_country_synonyms); i += 2) @@ -213,9 +223,11 @@ static void remap_synonym(char *name) { TRACE(":Mapping synonym %s to %s\n",name,_country_synonyms[i+1]); strcpy(name, _country_synonyms[i+1]); - return; + return TRUE; } } + + return FALSE; }
/* Note: Flags are weighted in order of matching importance */ @@ -265,7 +277,6 @@ find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam )
TRACE("%s\n", wine_dbgstr_w(res->search_language));
-#if _MSVCR_VER >= 110 if (res->allow_sname && compare_info(name,LOCALE_SNAME,buff,res->search_language, TRUE)) { TRACE(":Found locale: %s->%s\n", wine_dbgstr_w(res->search_language), wine_dbgstr_w(buff)); @@ -273,7 +284,6 @@ find_best_locale_proc( WCHAR *name, DWORD locale_flags, LPARAM lParam ) wcscpy(res->found_lang_sname, name); return STOP_LOOKING; } -#endif
/* Check Language */ if (compare_info(name,LOCALE_SISO639LANGNAME,buff,res->search_language, TRUE) || @@ -321,7 +331,7 @@ BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_m { thread_data_t *data = msvcrt_get_thread_data(); const char *cp, *region; - BOOL is_sname = FALSE; + BOOL is_sname = FALSE, remapped = FALSE; DWORD locale_cp;
if (!strcmp(locale, data->cached_locale)) { @@ -357,14 +367,21 @@ BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_m search_language_buf[cp-locale] = '\0'; }
+ if ((remapped = remap_synonym(search_language_buf))) + { + search.allow_sname = TRUE; + } + +#if _MSVCR_VER >= 110 if(!cp && !region) { - remap_synonym(search_language_buf); search.allow_sname = TRUE; } +#endif
MultiByteToWideChar(CP_ACP, 0, search_language_buf, -1, search.search_language, MAX_ELEM_LEN); - MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN); + if (!remapped) + MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN);
EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL);
@@ -378,7 +395,7 @@ BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_m return FALSE;
wcsncpy(sname, search.found_lang_sname, sname_size); - is_sname = (search.match_flags & FOUND_SNAME) != 0; + is_sname = !remapped && (search.match_flags & FOUND_SNAME) != 0; }
/* Obtain code page */ diff --git a/dlls/msvcrt/tests/locale.c b/dlls/msvcrt/tests/locale.c index 95c468bc140..f77e8f93abb 100644 --- a/dlls/msvcrt/tests/locale.c +++ b/dlls/msvcrt/tests/locale.c @@ -114,14 +114,14 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "chinese"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "chinese-simplified"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_People's Republic of China.936")) || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret); @@ -129,20 +129,20 @@ static void test_setlocale(void) ret = setlocale(LC_ALL, "chinese-traditional"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") + ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "chs"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") + ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") || !strcmp(ret, "Chinese (Simplified)_China.936") || broken(!strcmp(ret, "Chinese_People's Republic of China.936")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "cht"); ok(ret != NULL || broken (ret == NULL), "ret == NULL\n"); if(ret) - todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") + ok(!strcmp(ret, "Chinese (Traditional)_Taiwan.950") || broken(!strcmp(ret, "Chinese_Taiwan.950")), "ret = %s\n", ret);
ret = setlocale(LC_ALL, "Chinese_China.936"); @@ -150,7 +150,7 @@ static void test_setlocale(void) if(ret) { trace("Chinese_China.936=%s\n", ret); - todo_wine ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") /* Vista - Win7 */ + ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of China.936") /* Vista - Win7 */ || !strcmp(ret, "Chinese (Simplified)_China.936") /* Win8 - Win10 */ || broken(!strcmp(ret, "Chinese_People's Republic of China.936")), "ret = %s\n", ret); }
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcr110/tests/msvcr110.c | 4 ++-- nls/locale.nls | Bin 745154 -> 745198 bytes tools/make_unicode | 1 + 3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr110/tests/msvcr110.c b/dlls/msvcr110/tests/msvcr110.c index 2afdc419641..4d77a93da6c 100644 --- a/dlls/msvcr110/tests/msvcr110.c +++ b/dlls/msvcr110/tests/msvcr110.c @@ -190,13 +190,13 @@ static void test_setlocale(void) ret = p_setlocale(LC_ALL, "cht"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale cht failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale cht failed, got %s\n", ret);
/* used to return Chinese (Traditional)_Taiwan.950 */ ret = p_setlocale(LC_ALL, "chinese-traditional"); ok(ret != NULL, "expected success, but got NULL\n"); if (ret) - todo_wine ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale chinese-traditional failed, got %s\n", ret); + ok(!strcmp(ret, "Chinese (Traditional)_Hong Kong SAR.950"), "setlocale chinese-traditional failed, got %s\n", ret);
p_setlocale(LC_ALL, "C"); } diff --git a/nls/locale.nls b/nls/locale.nls index bc028035a8b00d237b9b47b02db469552fea96b6..a1f32fdfde7cd24fe0f2d36a9357fe131882056f 100644 GIT binary patch delta 135185 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%0A16vh1 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 EKgwyZPyhe`
delta 135141 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	)lVB+S8bY{Xt1lW|Looq1o9et`QA-VRg`n{>pC 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
diff --git a/tools/make_unicode b/tools/make_unicode index 69dce31df47..de34588359c 100755 --- a/tools/make_unicode +++ b/tools/make_unicode @@ -4678,6 +4678,7 @@ sub build_locale_data() my $snativectryname = loc_query( $loc, "/ldml/localeDisplayNames/territories/territory[@type='$territory' and not(@alt)]" ); $sengcountry =~ s/South Korea/Korea/; $sengcountry =~ s/T\xfcrkiye/Turkey/; + $sengcountry =~ s/Hong Kong SAR China/Hong Kong SAR/; $snativelangname ||= $senglanguage; $snativectryname ||= $sengcountry; if ($script)
From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcrt/locale.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index a2291c60eeb..76d66ce823d 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -380,10 +380,20 @@ BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_m #endif
MultiByteToWideChar(CP_ACP, 0, search_language_buf, -1, search.search_language, MAX_ELEM_LEN); - if (!remapped) - MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN);
- EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL); + if (search.allow_sname && IsValidLocaleName(search.search_language)) + { + search.match_flags = FOUND_SNAME; + wcscpy(search.found_lang_sname, search.search_language); + } + else + { + if (!remapped) + MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN); + + EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL); + } +
if (!search.match_flags) return FALSE;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=133704
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
msvcr110: msvcr110.c:169: Test failed: setlocale chinese failed, got Chinese_People's Republic of China.936 msvcr110.c:175: Test failed: setlocale Chinese_China.936 failed, got Chinese_People's Republic of China.936 msvcr110.c:181: Test failed: setlocale chinese-simplified failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:187: Test failed: setlocale chs failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:193: Test failed: setlocale cht failed, got Chinese (Traditional)_Taiwan.950 msvcr110.c:199: Test failed: setlocale chinese-traditional failed, got Chinese (Traditional)_Taiwan.950
=== w7u_adm (32 bit report) ===
msvcr110: msvcr110.c:169: Test failed: setlocale chinese failed, got Chinese_People's Republic of China.936 msvcr110.c:175: Test failed: setlocale Chinese_China.936 failed, got Chinese_People's Republic of China.936 msvcr110.c:181: Test failed: setlocale chinese-simplified failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:187: Test failed: setlocale chs failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:193: Test failed: setlocale cht failed, got Chinese (Traditional)_Taiwan.950 msvcr110.c:199: Test failed: setlocale chinese-traditional failed, got Chinese (Traditional)_Taiwan.950
=== w7u_el (32 bit report) ===
msvcr110: msvcr110.c:169: Test failed: setlocale chinese failed, got Chinese_People's Republic of China.936 msvcr110.c:175: Test failed: setlocale Chinese_China.936 failed, got Chinese_People's Republic of China.936 msvcr110.c:181: Test failed: setlocale chinese-simplified failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:187: Test failed: setlocale chs failed, got Chinese (Simplified)_People's Republic of China.936 msvcr110.c:193: Test failed: setlocale cht failed, got Chinese (Traditional)_Taiwan.950 msvcr110.c:199: Test failed: setlocale chinese-traditional failed, got Chinese (Traditional)_Taiwan.950
=== debian11 (32 bit ar:MA report) ===
msvcrt: locale.c:464: Test failed: ret = Norwegian Bokm?l_Norway.1252 locale.c:473: Test failed: ret = Norwegian Bokm?l_Norway.1252
=== debian11 (32 bit he:IL report) ===
msvcrt: locale.c:464: Test failed: ret = Norwegian Bokm?l_Norway.1252 locale.c:473: Test failed: ret = Norwegian Bokm?l_Norway.1252
=== debian11 (32 bit hi:IN report) ===
msvcrt: locale.c:464: Test failed: ret = Norwegian Bokm��l_Norway.125 locale.c:473: Test failed: ret = Norwegian Bokm��l_Norway.125
=== debian11 (32 bit ja:JP report) ===
msvcrt: locale.c:464: Test failed: ret = Norwegian Bokmal_Norway.1252 locale.c:473: Test failed: ret = Norwegian Bokmal_Norway.1252
=== debian11 (32 bit zh:CN report) ===
msvcrt: locale.c:464: Test failed: ret = Norwegian Bokm?l_Norway.1252 locale.c:473: Test failed: ret = Norwegian Bokm?l_Norway.1252