[PATCH] msvcrt: Support .OCP locale.

Paul Gofman pgofman at codeweavers.com
Thu Sep 17 07:44:17 CDT 2020


Used by Marvel's Avengers.

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
 dlls/msvcrt/locale.c       | 9 +++++++++
 dlls/msvcrt/tests/locale.c | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index 9a10ceabc4e..3af733ec7bc 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -1135,6 +1135,15 @@ static MSVCRT_pthreadlocinfo create_locinfo(int category,
                 |LOCALE_NOUSEROVERRIDE, buf, sizeof(buf));
         cp[0] = atoi(buf);
 
+        for(i=1; i<6; i++) {
+            lcid[i] = lcid[0];
+            cp[i] = cp[0];
+        }
+    } else if (locale[0] == '.' && locale[1] == 'O' && locale[2] == 'C' && locale[3] == 'P' && !locale[4]) {
+        lcid[0] = GetUserDefaultLCID();
+        GetLocaleInfoA(lcid[0], LOCALE_IDEFAULTCODEPAGE, buf, sizeof(buf));
+        cp[0] = atoi(buf);
+
         for(i=1; i<6; i++) {
             lcid[i] = lcid[0];
             cp[i] = cp[0];
diff --git a/dlls/msvcrt/tests/locale.c b/dlls/msvcrt/tests/locale.c
index 08abac00bed..47742290faf 100644
--- a/dlls/msvcrt/tests/locale.c
+++ b/dlls/msvcrt/tests/locale.c
@@ -612,6 +612,15 @@ static void test_setlocale(void)
         ok(!strcmp(ret, buf), "ret = %s, expected %s\n", ret, buf);
     }
 
+    ret = setlocale(LC_ALL, ".OCP");
+    ok(ret != NULL, "ret == NULL\n");
+    if(ret) {
+        char *cp = strchr(ret, '.');
+
+        GetLocaleInfoA(GetUserDefaultLCID(), LOCALE_IDEFAULTCODEPAGE, buf, sizeof(buf));
+        ok(cp && !strcmp(cp + 1, buf), "ret %s, buf %s.\n", ret, buf);
+    }
+
     ret = setlocale(LC_ALL, "English_United States.UTF8");
     ok(ret == NULL, "ret != NULL\n");
 
-- 
2.26.2




More information about the wine-devel mailing list