oleaut32: Fix failing VarMod tests in WinXP, fix VarMod(VT_DECIMAL) in Wine

a_villacis at palosanto.com a_villacis at palosanto.com
Sun Dec 24 15:08:35 CST 2006


In a preparation for a possible implementation of IDispatch
tests in oleaut32, I decided to clean up the failing tests in
Windows XP:

vartest.c:1691:Skipping VarAbs(BSTR) as decimal separator is ','
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 0, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 1, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 2, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 3, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 4, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 5, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 6, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 7, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 11, r type of 14,
...
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 18, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 19, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x0 for l
type of 20, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 21, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 22, r type of 14,
vartest.c:2423: Test failed: VarMod: expected 0x80070057, got 0x8002000A
for l type of 23, r type of 14,
vartest.c:5172: Test failed: VarCat: VT_INT concat with VT_BOOL (TRUE)
returned inncorrect result
vartest.c:5188: Test failed: VarCat: VT_INT concat with VT_BOOL (FALSE)
returned inncorrect result
vartest.c:5248: Test failed: VarCat: VT_BSTR concat with VT_DATE returned
inncorrect result
vartest.c:5264: Test failed: VarCat: VT_DATE concat with VT_BSTR returned
inncorrect result
vartest: 1024739 tests executed, 0 marked as todo, 112 failures.

After some examination, I realized that the DECIMAL value used
for the VarMod(VT_DECIMAL) test is being incorrectly initialized,
because there is no special case for it in the test. When properly
initialized, many VarMod invocations involving VT_DECIMAL now
succeed where the test expected E_INVALIDARG. So I corrected the
test, which now passes on WinXP. However, now the VarMod implementation
in Wine is revealed to handle VT_DECIMAL incorrectly, so this was
corrected as well. As a side effect, two tests inside a todo_wine block
now succeed, so the todo_wine was removed. All of this is in the
attached patch.

Changelog:
* Fix VarMod(VT_DECIMAL) test by properly initializing the DECIMAL to use.
* Fix Wine handling of VT_DECIMAL in VarMod.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: wine-oleaut32-variant-VarMod_DECIMAL_fix.patch
Type: text/x-patch
Size: 4513 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20061224/d43e1587/wine-oleaut32-variant-VarMod_DECIMAL_fix.bin


More information about the wine-patches mailing list