diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c index 2f82d9b9145..d28b5c10876 100644 --- a/dlls/oleaut32/tests/vartest.c +++ b/dlls/oleaut32/tests/vartest.c @@ -542,14 +542,11 @@ static void _test_bstr_var(unsigned line, const VARIANT *v, const char *str) static void test_VariantInit(void) { - VARIANTARG v1, v2; + VARIANT v; - /* Test that VariantInit() only sets the type */ - memset(&v1, -1, sizeof(v1)); - v2 = v1; - V_VT(&v2) = VT_EMPTY; - VariantInit(&v1); - ok(!memcmp(&v1, &v2, sizeof(v1)), "VariantInit() set extra fields\n"); + memset(&v, -1, sizeof(v)); + VariantInit(&v); + ok(V_VT(&v) == VT_EMPTY, "VariantInit() returned vt %d\n", V_VT(&v)); } /* All possible combinations of extra V_VT() flags */ diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 92cf01bab48..053903ef461 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -575,7 +575,8 @@ void WINAPI VariantInit(VARIANTARG* pVarg) { TRACE("(%p)\n", pVarg); - V_VT(pVarg) = VT_EMPTY; /* Native doesn't set any other fields */ + /* Win8.1 zeroes whole struct. Previous implementations don't set any other fields. */ + V_VT(pVarg) = VT_EMPTY; } HRESULT VARIANT_ClearInd(VARIANTARG *pVarg)