From 3ed52e37a4b50d189f31d717b7168e4d1ebdadff Mon Sep 17 00:00:00 2001 From: Reece Dunn Date: Sun, 20 Jul 2008 12:04:43 +0100 Subject: [PATCH] oleaut32: fix the SafeArrayGetVartype tests on Vista and use that behaviour. --- dlls/oleaut32/safearray.c | 2 ++ dlls/oleaut32/tests/safearray.c | 10 +++++++--- 2 files changed, 9 insertions(+), 3 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..8593f1e 100644 --- a/dlls/oleaut32/tests/safearray.c +++ b/dlls/oleaut32/tests/safearray.c @@ -491,8 +491,10 @@ static void test_safearray(void) hres = pSafeArrayGetVartype(a, &vt); 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); + /* Special case. Checked against Windows. */ + 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.6.1.1071.g76fb