Module: wine Branch: master Commit: 4ad1474678d440080fe659e5c21d3ecf90b18a2f URL: https://gitlab.winehq.org/wine/wine/-/commit/4ad1474678d440080fe659e5c21d3ec...
Author: Santino Mazza smazza@codeweavers.com Date: Wed Nov 15 13:59:17 2023 -0300
mlang: Fix GetStrCodePages for characters with different codepages.
---
dlls/mlang/mlang.c | 7 ++++++- dlls/mlang/tests/mlang.c | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c index add0dd0a104..6b0f2922a77 100644 --- a/dlls/mlang/mlang.c +++ b/dlls/mlang/mlang.c @@ -3340,7 +3340,12 @@ static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages( IMLangFontLink2* iface, if (ret != S_OK) return E_FAIL;
if (!cps) cps = cp; - else cps &= cp; + else if ((cps & cp) != 0) cps &= cp; + else + { + i--; + break; + }
/* FIXME: not tested */ if (priority_cp & cps) break; diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 8e55b07b021..3240d945245 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -1280,8 +1280,8 @@ static void IMLangFontLink_Test(IMLangFontLink* iMLFL) processed = 0; ret = IMLangFontLink_GetStrCodePages(iMLFL, str, 4, 0, &dwCodePages, &processed); ok(ret == S_OK, "IMLangFontLink_GetStrCodePages error %lx\n", ret); - todo_wine ok(dwCodePages == dwCmpCodePages, "expected %lx, got %lx\n", dwCmpCodePages, dwCodePages); - todo_wine ok(processed == 3, "expected 3, got %ld\n", processed); + ok(dwCodePages == dwCmpCodePages, "expected %lx, got %lx\n", dwCmpCodePages, dwCodePages); + ok(processed == 3, "expected 3, got %ld\n", processed);
dwCodePages = 0xffff; processed = -1;