Re: oleaut32: [Patch 1/2] VarCat must use localized names for VT_BOOL
Detlef Riekenberg wrote:
http://test.winehq.org/data/f212579ae9a1b770ebd34cec20f95e1977bb57f0/xp_dr-a...
While reading the code for a test failure on all of my Windows installations, the current code was already strange:
5436 ok(hres == VARCMP_EQ || 5437 broken(hres == VARCMP_GT), "Expected VARCMP_EQ, got %08x\n", hres);
I feel bad for adding a "broken(hres == VARCMP_LT)".
Extending vartest and inserting a trace made the localization error obvisious: VARCMP_LT was returned when comparing "12Falsch" and "12False".
The failure for the similar test (VT_BOOL with True: "12Wahr" > "12True") was hidden by the wrong "broken(hres == VARCMP_GT)".
We have also another XP Machine that produced this failure. (xp-home-SP2-czech)
------------------------------------------------------------------------
Hi Detlef, The lstrcpyW and lstrcatW additions to init() in the tests don't work on Win95. I guess that's where the new failures come from: http://test.winehq.org/data/ed74088d7ddf0c389e7596237add7cb751b17a0a/95_W95/... Could you have a look? -- Cheers, Paul.
On Mi, 2009-04-15 at 13:37 +0200, Paul Vriens wrote:
The lstrcpyW and lstrcatW additions to init() in the tests don't work on Win95. I guess that's where the new failures come from:
I removed a "broken(hres == VARCMP_GT)", and that's what VarCmp on your w95 machine returned. My second Patch for oleaut32/tests/vartest.c was not applied, otherwise we would have seen the reason in the log. Can you please use the attached diff and post the result? Thanks -- By by ... Detlef
Detlef Riekenberg wrote:
On Mi, 2009-04-15 at 13:37 +0200, Paul Vriens wrote:
The lstrcpyW and lstrcatW additions to init() in the tests don't work on Win95. I guess that's where the new failures come from:
I removed a "broken(hres == VARCMP_GT)", and that's what VarCmp on your w95 machine returned. My second Patch for oleaut32/tests/vartest.c was not applied, otherwise we would have seen the reason in the log.
Can you please use the attached diff and post the result? Thanks
Here it is: vartest.c:127: Tests skipped: No support for I8 and UI8 data types vartest.c:5452: got 0x0 and VT_BSTR(12True) for VT_INT(12), VT_BOOL(1) vartest.c:5455: got 0x2 for VT_BSTR(12True), VT_BSTR() vartest.c:5456: Test failed: Expected VARCMP_EQ, got 00000002 for VT_BSTR(12True), VT_BSTR() vartest.c:5471: got 0x0 and VT_BSTR(12False) for VT_INT(12), VT_BOOL(0) vartest.c:5474: got 0x2 for VT_BSTR(12False), VT_BSTR() vartest.c:5475: Test failed: Expected VARCMP_EQ, got 00000002 for VT_BSTR(12False), VT_BSTR() vartest: 1025087 tests executed (0 marked as todo, 2 failures), 1 skipped. As said. I think the reason for sz12_true being empty is that you are using W-functions in the init() function. -- Cheers, Paul.
Paul Vriens wrote:
Detlef Riekenberg wrote:
On Mi, 2009-04-15 at 13:37 +0200, Paul Vriens wrote:
The lstrcpyW and lstrcatW additions to init() in the tests don't work on Win95. I guess that's where the new failures come from:
I removed a "broken(hres == VARCMP_GT)", and that's what VarCmp on your w95 machine returned. My second Patch for oleaut32/tests/vartest.c was not applied, otherwise we would have seen the reason in the log.
Can you please use the attached diff and post the result? Thanks
Here it is:
vartest.c:127: Tests skipped: No support for I8 and UI8 data types vartest.c:5452: got 0x0 and VT_BSTR(12True) for VT_INT(12), VT_BOOL(1) vartest.c:5455: got 0x2 for VT_BSTR(12True), VT_BSTR() vartest.c:5456: Test failed: Expected VARCMP_EQ, got 00000002 for VT_BSTR(12True), VT_BSTR() vartest.c:5471: got 0x0 and VT_BSTR(12False) for VT_INT(12), VT_BOOL(0) vartest.c:5474: got 0x2 for VT_BSTR(12False), VT_BSTR() vartest.c:5475: Test failed: Expected VARCMP_EQ, got 00000002 for VT_BSTR(12False), VT_BSTR() vartest: 1025087 tests executed (0 marked as todo, 2 failures), 1 skipped.
As said. I think the reason for sz12_true being empty is that you are using W-functions in the init() function.
The attached patch fixes 'my' issue on Win95 so it's indeed the use of W-functions. -- Cheers, Paul. diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c index 24ef171..ef1ecf2 100644 --- a/dlls/oleaut32/tests/vartest.c +++ b/dlls/oleaut32/tests/vartest.c @@ -102,19 +102,25 @@ static void init(void) { BSTR bstr; HRESULT res; + CHAR localbool[32]; + CHAR sz12_trueA[32], sz12_falseA[32]; res = VarBstrFromBool(VARIANT_TRUE, LANG_USER_DEFAULT, VAR_LOCALBOOL, &bstr); - ok(SUCCEEDED(res) && (lstrlenW(bstr) > 0), + WideCharToMultiByte(CP_ACP, 0, bstr, -1, localbool, sizeof(localbool), NULL, NULL); + ok(SUCCEEDED(res) && (lstrlenA(localbool) > 0), "Expected localized string for 'True'\n"); - lstrcpyW(sz12_true, sz12); - if (bstr) lstrcatW(sz12_true, bstr); + lstrcpyA(sz12_trueA, "12"); + if (bstr) lstrcatA(sz12_trueA, localbool); + MultiByteToWideChar(CP_ACP, 0, sz12_trueA, -1, sz12_true, sizeof(sz12_true)/sizeof(WCHAR)); SysFreeString(bstr); res = VarBstrFromBool(VARIANT_FALSE, LANG_USER_DEFAULT, VAR_LOCALBOOL, &bstr); - ok(SUCCEEDED(res) && (lstrlenW(bstr) > 0), + WideCharToMultiByte(CP_ACP, 0, bstr, -1, localbool, sizeof(localbool), NULL, NULL); + ok(SUCCEEDED(res) && (lstrlenA(localbool) > 0), "Expected localized string for 'False'\n"); - lstrcpyW(sz12_false, sz12); - if (bstr) lstrcatW(sz12_false, bstr); + lstrcpyA(sz12_falseA, "12"); + if (bstr) lstrcatA(sz12_falseA, localbool); + MultiByteToWideChar(CP_ACP, 0, sz12_falseA, -1, sz12_false, sizeof(sz12_false)/sizeof(WCHAR)); SysFreeString(bstr); hOleaut32 = GetModuleHandle("oleaut32.dll");
participants (2)
-
Detlef Riekenberg -
Paul Vriens