From f7eeef81d17629f6059fabb2847fea3c1e6f9666 Mon Sep 17 00:00:00 2001 From: Reece Dunn Date: Sun, 20 Jul 2008 09:11:44 +0100 Subject: [PATCH] oleaut32: fix SafeArrayGetVartype test on Vista and use that behaviour. --- dlls/oleaut32/safearray.c | 2 ++ dlls/oleaut32/tests/safearray.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/oleaut32/safearray.c b/dlls/oleaut32/safearray.c index 34cfd91..a19d599 100644 --- a/dlls/oleaut32/safearray.c +++ b/dlls/oleaut32/safearray.c @@ -1500,6 +1500,8 @@ HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY* psa, VARTYPE* pvt) if (psa->fFeatures & FADF_RECORD) *pvt = VT_RECORD; + else if ((psa->fFeatures & (FADF_HAVEIID|FADF_DISPATCH)) == (FADF_HAVEIID|FADF_DISPATCH)) + *pvt = VT_DISPATCH; else if (psa->fFeatures & FADF_HAVEIID) *pvt = VT_UNKNOWN; else if (psa->fFeatures & FADF_HAVEVARTYPE) diff --git a/dlls/oleaut32/tests/safearray.c b/dlls/oleaut32/tests/safearray.c index 53896ef..308b033 100644 --- a/dlls/oleaut32/tests/safearray.c +++ b/dlls/oleaut32/tests/safearray.c @@ -492,7 +492,9 @@ static void test_safearray(void) ok(hres == S_OK, "SAGVT of arra y with vt %d failed with %x\n", vttypes[i].vt, hres); if (vttypes[i].vt == VT_DISPATCH) { /* Special case. Checked against Windows. */ - ok(vt == VT_UNKNOWN, "SAGVT of array with VT_DISPATCH returned not VT_UNKNOWN, but %d\n", vt); + ok(broken(vt == VT_UNKNOWN) || + vt == VT_DISPATCH /* Vista */, + "SAGVT of array with VT_DISPATCH returned not VT_UNKNOWN or VT_DISPATCH, but %d\n", vt); } else { ok(vt == vttypes[i].vt, "SAGVT of array with vt %d returned %d\n", vttypes[i].vt, vt); } @@ -511,7 +513,9 @@ static void test_safearray(void) ok(hres == S_OK, "SAGVT of array with vt %d failed with %x\n", vttypes[i].vt, hres); if (vttypes[i].vt == VT_DISPATCH) { /* Special case. Checked against Windows. */ - ok(vt == VT_UNKNOWN, "SAGVT of array with VT_DISPATCH returned not VT_UNKNOWN, but %d\n", vt); + ok(broken(vt == VT_UNKNOWN) || + vt == VT_DISPATCH /* Vista */, + "SAGVT of array with VT_DISPATCH returned not VT_UNKNOWN or VT_DISPATCH, but %d\n", vt); } else { ok(vt == vttypes[i].vt, "SAGVT of array with vt %d returned %d\n", vttypes[i].vt, vt); } -- 1.5.4.3