1
0
mirror of https://github.com/wine-mirror/wine synced 2024-06-29 06:14:34 +00:00

mlang: Fix bug with codepage priority in GetStrCodePages.

This commit is contained in:
Santino Mazza 2023-11-28 17:29:21 -03:00 committed by Alexandre Julliard
parent bc62314811
commit b549ae11fb
2 changed files with 4 additions and 7 deletions

View File

@ -3336,23 +3336,20 @@ static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages( IMLangFontLink2* iface,
for (i = 0; i < src_len; i++)
{
DWORD cp, next_cp = 0;
DWORD cp = 0;
HRESULT ret;
ret = IMLangFontLink2_GetCharCodePages(iface, src[i], &cp);
if (i + 1 < src_len)
ret = IMLangFontLink2_GetCharCodePages(iface, src[i + 1], &next_cp);
if (ret != S_OK) return E_FAIL;
if (!cps) cps = cp;
else if ((cps & cp) != 0) cps &= cp;
else if ((cps & cp) != 0 &&
!((priority_cp & cps) ^ (priority_cp & cp))) cps &= cp;
else
{
i--;
break;
}
if ((priority_cp & cps) && !(priority_cp & next_cp)) break;
}
if (codepages) *codepages = cps;

View File

@ -1330,7 +1330,7 @@ static void IMLangFontLink_Test(IMLangFontLink* iMLFL)
ret = IMLangFontLink_GetStrCodePages(iMLFL, L"\uff90a", 2, FS_LATIN1, &dwCodePages, &processed);
ok(ret == S_OK, "IMLangFontLink_GetStrCodePages error %lx\n", ret);
ok(dwCodePages == dwCmpCodePages, "expected %lx, got %lx\n", dwCmpCodePages, dwCodePages);
todo_wine ok(processed == 1, "expected 1, got %ld\n", processed);
ok(processed == 1, "expected 1, got %ld\n", processed);
dwCodePages = 0xffff;
processed = -1;