Piotr Caban : oleaut32: Handle VariantCopy errors in VariantChangeTypeEx.
Alexandre Julliard
julliard at winehq.org
Thu May 1 14:40:00 CDT 2014
Module: wine
Branch: master
Commit: d1469144e9a5e300223703cb69d32e6e6c25b28b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1469144e9a5e300223703cb69d32e6e6c25b28b
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu May 1 12:14:27 2014 +0200
oleaut32: Handle VariantCopy errors in VariantChangeTypeEx.
---
dlls/oleaut32/tests/vartype.c | 7 +++++++
dlls/oleaut32/variant.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c
index ea5065f..b873d82 100644
--- a/dlls/oleaut32/tests/vartype.c
+++ b/dlls/oleaut32/tests/vartype.c
@@ -6269,6 +6269,13 @@ static void test_ChangeType_keep_dst(void)
hres = VariantChangeTypeEx(&v2, &v1, 0, 0, VT_INT);
ok(hres == DISP_E_TYPEMISMATCH, "VariantChangeTypeEx returns %08x\n", hres);
ok(V_VT(&v2) == VT_INT && V_INT(&v2) == 4, "VariantChangeTypeEx changed dst variant\n");
+ V_VT(&v2) = 0xff; /* incorrect variant type */
+ hres = VariantChangeTypeEx(&v2, &v1, 0, 0, VT_INT);
+ ok(hres == DISP_E_TYPEMISMATCH, "VariantChangeTypeEx returns %08x\n", hres);
+ ok(V_VT(&v2) == 0xff, "VariantChangeTypeEx changed dst variant\n");
+ hres = VariantChangeTypeEx(&v2, &v1, 0, 0, VT_BSTR);
+ ok(hres == DISP_E_BADVARTYPE, "VariantChangeTypeEx returns %08x\n", hres);
+ ok(V_VT(&v2) == 0xff, "VariantChangeTypeEx changed dst variant\n");
SysFreeString(bstr);
}
diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index 053903e..c3bd225 100644
--- a/dlls/oleaut32/variant.c
+++ b/dlls/oleaut32/variant.c
@@ -1042,7 +1042,7 @@ HRESULT WINAPI VariantChangeTypeEx(VARIANTARG* pvargDest, VARIANTARG* pvargSrc,
if (SUCCEEDED(res)) {
V_VT(&vTmp) = vt;
- VariantCopy(pvargDest, &vTmp);
+ res = VariantCopy(pvargDest, &vTmp);
}
VariantClear(&vTmp);
VariantClear(&vSrcDeref);
More information about the wine-cvs
mailing list