From: Nikolay Sivov Subject: mlang/tests: Use BSTR strings instead of plain WCHARs when API tells so Message-Id: <550BC069.2060901@codeweavers.com> Date: Fri, 20 Mar 2015 09:38:33 +0300 --- From a47d08b0912ef1fc543614c7480d6b67b70ec065 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Fri, 20 Mar 2015 09:35:00 +0300 Subject: [PATCH] mlang/tests: Use BSTR strings instead of plain WCHARs when API tells so --- dlls/mlang/tests/mlang.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 0078f6e..0dca558 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -473,6 +473,7 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) HRESULT ret; ULONG i, n; UINT total; + BSTR str; total = 0; ret = IMultiLanguage2_GetNumberOfCodePageInfo(iML2, &total); @@ -589,7 +590,10 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) skip("Legacy windows bug returning invalid charset of unicodeFEFF\n"); else { - ret = IMultiLanguage2_GetCharsetInfo(iML2, cpinfo[i].wszWebCharset, &mcsi); + str = SysAllocString(cpinfo[i].wszWebCharset); + ret = IMultiLanguage2_GetCharsetInfo(iML2, str, &mcsi); + SysFreeString(str); + /* _autoxxx charsets are a fake and GetCharsetInfo fails for them */ if (memcmp(cpinfo[i].wszWebCharset, autoW, 5 * sizeof(WCHAR))) { @@ -615,7 +619,10 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) skip("Legacy windows bug returning invalid charset of unicodeFEFF\n"); else { - ret = IMultiLanguage2_GetCharsetInfo(iML2, cpinfo[i].wszHeaderCharset, &mcsi); + str = SysAllocString(cpinfo[i].wszHeaderCharset); + ret = IMultiLanguage2_GetCharsetInfo(iML2, str, &mcsi); + SysFreeString(str); + /* _autoxxx charsets are a fake and GetCharsetInfo fails for them */ if (memcmp(cpinfo[i].wszHeaderCharset, autoW, 5 * sizeof(WCHAR))) { @@ -641,7 +648,10 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) skip("Legacy windows bug returning invalid charset of unicodeFEFF\n"); else { + str = SysAllocString(cpinfo[i].wszBodyCharset); ret = IMultiLanguage2_GetCharsetInfo(iML2, cpinfo[i].wszBodyCharset, &mcsi); + SysFreeString(str); + /* _autoxxx charsets are a fake and GetCharsetInfo fails for them */ if (memcmp(cpinfo[i].wszBodyCharset, autoW, 5 * sizeof(WCHAR))) { @@ -701,8 +711,11 @@ static void test_GetCharsetInfo_alias(IMultiLanguage *ml) WCHAR asciiW[] = {'a','s','c','i','i',0}; MIMECSETINFO info; HRESULT hr; + BSTR str; - hr = IMultiLanguage_GetCharsetInfo(ml, asciiW, &info); + str = SysAllocString(asciiW); + hr = IMultiLanguage_GetCharsetInfo(ml, str, &info); + SysFreeString(str); ok(hr == S_OK, "got %08x\n", hr); ok(!lstrcmpW(info.wszCharset, asciiW), "got %s\n", wine_dbgstr_w(info.wszCharset)); } @@ -1003,17 +1016,20 @@ static void test_GetLcidFromRfc1766(IMultiLanguage2 *iML2) WCHAR rfc1766W[MAX_RFC1766_NAME + 1]; LCID lcid; HRESULT ret; + BSTR str; DWORD i; static WCHAR en[] = { 'e','n',0 }; static WCHAR en_them[] = { 'e','n','-','t','h','e','m',0 }; static WCHAR english[] = { 'e','n','g','l','i','s','h',0 }; - for(i = 0; i < sizeof(lcid_table) / sizeof(lcid_table[0]); i++) { lcid = -1; MultiByteToWideChar(CP_ACP, 0, lcid_table[i].rfc1766, -1, rfc1766W, MAX_RFC1766_NAME); - ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, rfc1766W); + + str = SysAllocString(rfc1766W); + ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, str); + SysFreeString(str); /* IE <6.0 guess 0x412 (ko) from "kok" */ ok((ret == lcid_table[i].hr) || @@ -1025,15 +1041,18 @@ static void test_GetLcidFromRfc1766(IMultiLanguage2 *iML2) "#%02d: got LCID 0x%x (expected 0x%x)\n", i, lcid, lcid_table[i].lcid); } - - ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, NULL, en); + str = SysAllocString(en); + ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, NULL, str); ok(ret == E_INVALIDARG, "GetLcidFromRfc1766 returned: %08x\n", ret); + SysFreeString(str); ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, NULL); ok(ret == E_INVALIDARG, "GetLcidFromRfc1766 returned: %08x\n", ret); - ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, en_them); + str = SysAllocString(en_them); + ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, str); ok((ret == E_FAIL || ret == S_FALSE), "GetLcidFromRfc1766 returned: %08x\n", ret); + SysFreeString(str); if (ret == S_FALSE) { BSTR rfcstr; @@ -1042,9 +1061,12 @@ static void test_GetLcidFromRfc1766(IMultiLanguage2 *iML2) ret = IMultiLanguage2_GetRfc1766FromLcid(iML2, lcid, &rfcstr); ok(ret == S_OK, "Expected S_OK, got %08x\n", ret); ok_w2("Expected \"%s\", got \"%s\"n", en, rfcstr); + SysFreeString(rfcstr); } - ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, english); + str = SysAllocString(english); + ret = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, str); + SysFreeString(str); ok((ret == E_FAIL || ret == S_FALSE), "GetLcidFromRfc1766 returned: %08x\n", ret); if (ret == S_FALSE) { @@ -1054,6 +1076,7 @@ static void test_GetLcidFromRfc1766(IMultiLanguage2 *iML2) ret = IMultiLanguage2_GetRfc1766FromLcid(iML2, lcid, &rfcstr); ok(ret == S_OK, "Expected S_OK, got %08x\n", ret); ok_w2("Expected \"%s\", got \"%s\"n", en, rfcstr); + SysFreeString(rfcstr); } } -- 2.1.4